पाठ 3 / 25
Design-First Versus Code-First
Compare writing the specification first with generating it from code.
Where the description comes from
There are two main workflows. Design-first (also called API-first): teams write the OpenAPI description before implementation, review it with consumers, generate mocks so frontend and backend can work in parallel, then implement against it; the document is the contract and tests verify the implementation matches. Code-first: developers write the implementation with annotations or framework metadata, and a library generates the OpenAPI document at build or run time, as with springdoc-openapi for Spring Boot, FastAPI in Python or NestJS in TypeScript. Design-first gives better API design discussions, earlier feedback and stable contracts, but needs discipline to keep implementation in sync. Code-first keeps the description automatically in sync with the code, but tends to leak implementation details into the API and makes design review happen late. Many organisations mix them: design-first for public and cross-team APIs, code-first for internal services, with linting and breaking-change checks in CI either way.
Comparing the two workflows
Both end with a validated, published description; they start in different places.
design-first code-first
--------------------------------------------- ---------------------------------------------
1. write/modify openapi.yaml 1. write controller code + annotations
2. review in a pull request with consumers 2. build generates openapi.json
3. lint (Spectral/Redocly) + breaking-change 3. lint + breaking-change check on the
check against the previous version generated document
4. generate mock server; clients start 4. publish docs; clients integrate after
5. implement; contract tests verify it implementation exists
6. publish docs and SDKs 5. contract tests still recommended
strength: early design feedback, parallel work strength: description always matches code
risk: spec and code drift without tests risk: late review, implementation leaks into APIWhichever you choose, check it in CI
Both workflows fail the same way: an unreviewed change silently breaks clients. Store the document in Git, lint it and compare it with the previous version on every pull request.
त्वरित जाँच: What is a key benefit of design-first API development?
- The description is generated automatically from code
- No tests are needed
- Consumers can review the contract and build against mocks before implementation exists
- It avoids writing YAML
Answer
Consumers can review the contract and build against mocks before implementation exists — Designing the contract first enables early feedback and parallel frontend and backend work.