Intermediate
REST API Engineering
An API is a contract other people build on.
Resource design, HTTP semantics, validation, an error model clients can code against, pagination, filtering, versioning, idempotency and rate limiting — with Spring MVC as the implementation and OpenAPI as the contract.
8 lessons written1 outlined2 modules~2h reading
After this course you can
- Design resources and choose methods and status codes that mean what HTTP says they mean
- Return errors as a consistent model (RFC 9457 Problem Details) from one place
- Paginate large collections with cursors and know why offsets stop working
- Make writes idempotent and explain the idempotency key end to end
Curriculum
9 lessons · outlined lessons show their plan01
Resources, methods and status codesNouns, not verbs; PUT versus PATCH; 200, 201, 204, 400, 404, 409, 422 — and the difference a correct code makes to a client's retry logic.12 minDTOs and the API modelWhat returning an entity actually sends, why the schema must not be the contract, and the opt-in shape that makes a leak impossible rather than unlikely.11 minRequest validationBean Validation on request bodies, groups, custom constraints, and validating path and query parameters — with 400 versus 422 decided once.10 minError handling@ControllerAdvice, RFC 9457 Problem Details, mapping exceptions to responses, and never leaking a stack trace or an entity name.12 minOpenAPI and contractsGenerating the spec from code versus writing it first, springdoc, breaking versus compatible changes, and contract tests.outlinedDesign
02
Pagination, filtering and sortingOffset pagination and where it breaks, keyset and cursor pagination, filter grammars, and sort keys that stay stable.12 minVersioningURI, header and media-type versioning, what a breaking change is, and the deprecation process that keeps clients from being surprised.9 minIdempotencyIdempotency keys, storing the first response, the race between two identical requests, and the retry that must not charge twice.12 minRate limiting and HTTP cachingToken bucket and sliding window, 429 with Retry-After, ETags and conditional requests, and what a CDN can cache.11 min