What?
Defining how different systems communicate with each other through well defined Rules (API). The API should be easy to use, reliable, scalablem, flexible and well documented! They should support, at minimum:
- Create
- Read
- Update
- Delete
Different Kinds:
- REST API Vs GraphQL
- SOAP
Best Practises
- Avoid over/under-fetching data and having wasted / unnecessarily repeated requests.
- Have clear and consistent naming conventions, without verbs (E.g.
/users
, not/getUsers
)./users/123/orders
to get orders for a specific user./users/123/orders/456
to get a specific order for that user.
- Support pagination, filtering and sorting.
- Use authentication.
- Rate Limits! Helps avoid DDOS attacks.
- Documentation!