patterntypescriptTip
JSON:API Specification: Standardized resource envelope for consistent REST APIs
Viewed 0 times
json-apienveloperelationshipsincludedpaginationspecification
Problem
Every REST API team reinvents a response envelope — how to represent related resources, pagination metadata, and resource identity. This inconsistency forces consumers to learn new conventions for each API.
Solution
Implement the JSON:API specification (jsonapi.org). It defines a standard envelope for primary data, included related resources, pagination links, and error objects. Type attributes in a data.attributes object, relationships in data.relationships.
Why
JSON:API is a complete, battle-tested spec that solves common REST design decisions. Libraries exist for many languages and frameworks. Consumers familiar with JSON:API can integrate faster.
Gotchas
- JSON:API's compound document format (included) can produce large payloads if not used carefully — only include relationships actually needed by the client.
- The spec requires content-type: application/vnd.api+json — some clients must be configured to send and accept this.
- JSON:API is verbose by design — evaluate whether its structure suits your use case before committing.
Code Snippets
JSON:API response structure
const response = {
data: {
type: 'users',
id: '42',
attributes: { name: 'Alice', email: 'alice@example.com' },
relationships: {
posts: {
data: [{ type: 'posts', id: '1' }, { type: 'posts', id: '2' }]
}
}
},
included: [
{ type: 'posts', id: '1', attributes: { title: 'Hello World' } },
{ type: 'posts', id: '2', attributes: { title: 'Second Post' } }
],
links: { self: '/users/42' }
}Revisions (0)
No revisions yet.