Advanced API Design Patterns
REST best practices, GraphQL, gRPC, API versioning, rate limiting, and OpenAPI specifications
REST (Representational State Transfer): architectural style using HTTP methods (GET, POST, PUT, DELETE). Constraints: client-server separation, statelessness, cacheability, uniform interface.
Best practices: resources as nouns (users, orders), HTTP methods as verbs (GET /users/123, POST /orders). Status codes: 2xx success, 3xx redirect, 4xx client error, 5xx server error.
Idempotence: GET, PUT, DELETE idempotent (same result repeated); POST not idempotent. Pagination: offset/limit or cursor-based (cursor better for large datasets).
Filtering: query parameters (GET /users?status=active), server-side filtering prevents large responses. Sorting: order by parameter (GET /users?sort=created_at,-name).
Real-world: Twitter API v2, GitHub API, Stripe API all use REST principles; payload size critical for mobile.
Key Takeaways
Visual Diagram
GET /users -> 200 OK [users array] | POST /users -> 201 Created [new user]