REST API Design Cheatsheet

Quick reference for REST API design: HTTP methods, status codes, endpoints, request/response patterns, and best practices.

FeatureDescriptionExampleCategory
GETRetrieve resource(s)GET /users GET /users/1HTTP Methods
POSTCreate a new resourcePOST /users Body: { "name": "John" }HTTP Methods
PUTUpdate/replace a resourcePUT /users/1 Body: { "name": "John" }HTTP Methods
PATCHUpdate a resource partiallyPATCH /users/1 Body: { "name": "Jane" }HTTP Methods
DELETEDelete a resourceDELETE /users/1HTTP Methods
200 OKRequest succeededResponse: { "id": 1, "name": "John" }Status Codes
201 CreatedResource created successfullyResponse: { "id": 5 }Status Codes
204 No ContentSuccess but no content returnedDELETE /users/1 → 204Status Codes
400 Bad RequestClient sent invalid dataResponse: { "error": "Invalid email" }Status Codes
401 UnauthorizedAuthentication requiredResponse: { "error": "Unauthorized" }Status Codes
403 ForbiddenClient not allowedResponse: { "error": "Forbidden" }Status Codes
404 Not FoundResource not foundResponse: { "error": "User not found" }Status Codes
500 Internal Server ErrorServer errorResponse: { "error": "Something went wrong" }Status Codes
/usersCollection endpointGET /users → List all usersEndpoints
/users/{id}Single resource endpointGET /users/1 → Get user with id 1Endpoints
Nested endpointsRelationship endpointsGET /users/1/posts → Get posts of user 1Endpoints
JSON payloadSend data as JSONPOST /users { "name": "John" }Request & Response
Query parametersFilter, sort, paginateGET /users?limit=10&sort=nameRequest & Response
PaginationLimit and offset resultsGET /users?limit=10&offset=20Request & Response
Use nouns in URIsAvoid verbs; represent resources/users, /productsBest Practices
StatelessEach request contains all necessary infoNo session on serverBest Practices
VersioningSupport API version/api/v1/usersBest Practices
Consistent responsesStandardize JSON response format{ "success": true, "data": {...}, "error": null }Best Practices
Error handlingReturn proper status codes & messages404 + { "error": "Not found" }Best Practices