-
Notifications
You must be signed in to change notification settings - Fork 152
Filtering Using includes
The other approach is to provide a way for your clients to specify exactly which fields they want. This approach is very efficient because your clients can get exactly what they need.
The main drawback is that your server must be able to construct objects dynamically depending on the requests that come in and this might force you to go below the OO level and to generate the correct representation on the fly (i.e., without much help of the serialization mechanism).
You SHOULD define fields to include as follows:
GET /dogs/1?fields=name,color,location
200 OK
{
"uuid": "<uuid>",
"name": "Beethoven",
"color": "...",
"location": "Neighbour's garden"
}
For collection resources, your API should be intelligent enough and infer that the fields listed correspond to entity fields and NOT to the representation.
That is to say: your API SHOULD NOT require clients to specify fields like: "items.id" just to state that they want the id field which will be within an object in the "items" array returned by the collection resource; instead, your API should accept "id" as field value and filter intelligently.
This project is distributed under the terms of the EUPL FOSS license
REST Resources Design Workflow
REST Resources Single items and collections
REST Resources Many to many Relations
REST Resources Relations expansion
HTTP Status Codes Success (2xx)
HTTP Status Codes Redirection (3xx)
HTTP Status Codes Client Error (4xx)
HTTP Status Codes Server Error (5xx)
Pagination Out of range/bounds
Long-running Operations Example
Concurrency vs Delete operation
Caching and conditional requests About
Caching and conditional requests Rules
Caching and conditional requests HTTP headers
Error handling Example with a single error
Error handling Example with multiple errors
Error handling Example with parameters
Error handling Example with additional metadata
Bulk operations HTTP status codes
Bulk operations Resources naming convention
Bulk operations Creation example
Bulk operations Update example
Bulk operations Create and update example
File upload Simple file upload
File upload Simple file upload example
File upload Complex file upload
File upload Complex file upload example
REST Security General recommendations
REST Security Insecure direct object references