Backend Systems · Cluster

API Styles

REST, RPC, and GraphQL tradeoffs.

  1. 01 Resource Identity and URI Design in REST How REST separates the name of a thing from the bytes that represent it, and which URI choices survive changes to the underlying data model. foundational · Mar 19, 2024
  2. 02 Safety and Idempotence in HTTP Method Semantics What each method promises about side effects, how caches and retrying intermediaries use those promises, and where real endpoints quietly break them. foundational · Nov 6, 2025
  3. 03 RPC Interface Definitions and Wire Framing How an interface definition becomes bytes on a connection, from protobuf field encoding to gRPC length-prefixed messages and JSON-RPC envelopes. foundational · Sep 20, 2026
  4. 04 Content Negotiation and Representation Formats How Accept headers, quality values, and the Vary header decide which representation a cache may reuse, and why most APIs settle on a single format. intermediate · Dec 26, 2022
  5. 05 Cursor Pagination and the Cost of Deep Offsets Why OFFSET grows linear in page depth, how keyset predicates keep page cost flat, and what an opaque cursor has to carry to stay correct. intermediate · Jul 9, 2025
  6. 06 GraphQL Execution: Resolvers, Fan-Out, and Query Cost How a GraphQL document becomes a tree of resolver calls, why list fields produce N+1 queries, and which limits keep a single endpoint from being a denial-of-service vector. intermediate · Oct 14, 2025
  7. 07 API Versioning and the Mechanics of Schema Evolution Which schema changes are actually breaking, where a version identifier belongs, and how deprecation windows and data migrations interact with old clients. intermediate · Jun 26, 2026
  8. 08 Idempotency Keys and the Unknown-Outcome Problem How a client-supplied key turns a retried mutation into at-most-once execution, where the key has to be stored, and which failure windows remain open. advanced · Apr 22, 2025
  9. 09 Error Models Across REST, gRPC, and GraphQL How each style encodes failure, why status-code categories are not enough, and how a client decides whether an error is safe to retry. advanced · Jul 10, 2024
  10. 10 Streaming APIs: Framing, Backpressure, and Resumption How server-sent events, WebSocket, and gRPC streams delimit messages, what happens when a consumer reads slowly, and how a broken stream resumes. advanced · Feb 6, 2026