lesson

API Design

REST, GraphQL, gRPC — design principles, versioning, error handling.

API Design

REST API Best Practices

URL Structure

GET    /api/v1/users          → list users
GET    /api/v1/users/123      → get user 123
POST   /api/v1/users          → create user
PATCH  /api/v1/users/123      → update user 123
DELETE /api/v1/users/123      → delete user 123
GET    /api/v1/users/123/orders → list user 123's orders

Response Format

{
  "data": { "id": 123, "name": "Alice" },
  "meta": { "request_id": "abc-123" }
}

Error format:

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Email is required",
    "field": "email"
  }
}

Status Codes

CodeMeaningWhen
200OKSuccessful GET/PATCH
201CreatedSuccessful POST
204No ContentSuccessful DELETE
400Bad RequestValidation error
401UnauthorizedMissing/invalid auth
403ForbiddenValid auth, insufficient permissions
404Not FoundResource doesn't exist
429Too Many RequestsRate limited
500Internal Server ErrorBug in your code

Pagination

GET /api/v1/users?page=2&per_page=20
GET /api/v1/users?cursor=abc123&limit=20  (cursor-based, preferred for large datasets)


REST vs GraphQL vs gRPC

RESTGraphQLgRPC
FormatJSON over HTTPJSON over HTTPProtocol Buffers over HTTP/2
Best forPublic APIs, CRUDFlexible client queries, mobileInternal microservices, streaming
OverheadMediumHigher (query parsing)Low (binary, multiplexed)
VersioningURL-based (/v1, /v2)Schema evolutionProto file versioning

Sign in to use the AI study buddy on this lesson.

Resources