Skip to content

Latest commit

 

History

History
73 lines (53 loc) · 1.6 KB

File metadata and controls

73 lines (53 loc) · 1.6 KB

API Design Notes

These are notes on API design, not a guide.

Use Hierarchy

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": ""
    }
}

Use Basic Types

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 use a fill in the blanks / partial data

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.