Backend Systems · Cluster
API Styles
REST, RPC, and GraphQL tradeoffs.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.