These are notes on API design, not a guide.
Use the hierarchy of you data structure to communicate structure and relationships.
Do not do this
{
"person": {
"person_firstname": "",
"person_lastname": ""
}
}Do this
{
"person": {
"firstname": "",
"lastname": ""
}
}Not all numbers might be numbers
{
"error": {
"code": "3001",
"message": "User Dave NOT allowed"
}
}- If you do not plan to do calculations on
code, then let it be a string - If you want to make numeric comparisons a number would be better but string comparisons can work, depending on the language used
Do not return partial data, communicate in absolutes
For example if we have a record with and ID and and a resource the client wants to link to the resource, which is not served by the front-end itself.
{
"id": "abc123def456",
"resource": "abc123def456.pdf"
}Link generated in front-end: https://resources.example.com/abc123def456.pdf, meaning that https://resources.example.com/ is concatenated in the front-end.
If the we decide to service this from elsewhere, we need to deploy both a front-end and a back-end, instead communicate in absolutes.
{
"id": "abc123def456",
"resource": "https://resources.example.com/abc123def456.pdf"
}So if there is a change in the back-end, you do not have to deploy a front-end in tandem.
The back-end is responsible for the data, not the front-end.