API Design (REST) — Detailed Learning Notes
1. Introduction to API Design
-
API design is a core responsibility of backend engineers
-
Focus of this discussion: REST APIs
-
Other API styles exist:
- RPC
- GraphQL
-
Goal:
-
Create consistent, standardized APIs
-
Avoid confusion over:
- URI naming
- HTTP methods
- Status codes
-
-
Emphasis: Follow existing standards, not invent new ones
2. Common API Design Confusions
-
Should endpoints be:
/bookvs/books?
-
When updating:
PUTvsPATCH?
-
For custom actions:
- Which HTTP method?
-
What status codes to use?
-
These issues arise because:
- Standards were designed during MPA era
- Today we use SPA (Single Page Applications)
3. Goal of API Design Guidelines
-
Extract rules from REST standards
-
Ensure:
- Consistency
- Predictability
-
Benefit:
- Focus shifts to business logic instead of conventions
4. History of REST
4.1 Origin of the Web
-
1990: Tim Berners-Lee created:
- URI
- HTTP
- HTML
- First browser & server
-
Purpose:
- Share knowledge globally
4.2 Scaling Problem
-
Rapid growth → web couldn’t scale
-
Needed:
- New architectural constraints
4.3 Contribution of Roy Fielding
- Proposed constraints to solve scalability
- Later defined REST architecture (2000)
- Basis of modern API design
5. REST Constraints
5.1 Client-Server
-
Separation of concerns:
- Client → UI
- Server → data + logic
-
Enables independent scaling
5.2 Uniform Interface
-
Standardized communication
-
Sub-components:
- Resource identification
- Representation-based manipulation
- Self-descriptive messages
- HATEOAS
5.3 Layered System
-
Architecture is layered:
- Client → Load Balancer → Server → DB
-
Improves:
- Scalability
- Security
5.4 Caching
-
Responses must define:
- Cacheable / non-cacheable
-
Benefits:
- Reduced server load
- Faster responses
5.5 Statelessness
-
Each request must contain:
- All required data
-
Server does NOT remember past requests
-
Enables:
- Horizontal scaling
- Load balancing
5.6 Code on Demand (Optional)
- Server can send executable code (e.g., JS)
6. What is REST? (Meaning)
REST = Representational State Transfer
6.1 Representation
-
Resources are represented in formats:
- JSON (most common)
- HTML
- XML
6.2 State
-
Resource’s current data
-
Example:
- Cart → items, quantity, price
6.3 Transfer
-
Data exchanged via:
- HTTP methods (GET, POST, etc.)
Final Meaning
-
System where:
- Resources have representations
- State is transferred via HTTP
- Follows REST constraints
7. URL Structure
General Format
scheme://domain/path?query#fragment
Components
- Scheme →
http,https - Domain →
example.com - Path → resource
- Query → filters
- Fragment → page section
8. API URL Design
Standard Structure
https://api.example.com/v1/resource
Breakdown
https→ secure protocolapi.→ subdomain/v1→ versioning/resource→ endpoint
9. Resource Naming Rules
Rule 1: Use Plural
-
Correct:
/books
-
Incorrect:
/book
Even for Single Resource
-
Correct:
/books/1
-
Not:
/book/1
Reason
- Path represents collection, not instance
10. Hierarchical Paths
-
/books/1means:- books → collection
- 1 → specific item
11. URL Best Practices
Avoid
- Spaces
- Underscores
Use
- Lowercase
- Hyphens
Example
- "Harry Potter" →
harry-potter
12. Slugs
Definition
- Human-readable identifier
Example
/books/harry-potter
Transformation Rules
- Lowercase
- Replace spaces →
-
13. Idempotency
Definition
- Repeating request → same result
Meaning
- Calling API 1 time or 100 times → same effect
Example
-
DELETE request:
- Deleting same resource multiple times → still deleted
Importance
-
Prevents:
- Duplicate actions
- Unexpected side effects
14. HTTP Methods (Intro Context)
-
REST uses:
- GET
- POST
- PUT
- PATCH
- DELETE
-
Each method maps to:
- Specific action
[Context unclear – deeper mapping likely in next part]
15. Key Takeaways
-
REST is about:
- Standardization
- Scalability
-
Always:
- Use plural resources
- Follow consistent URL structure
- Maintain statelessness
-
API design should:
- Be predictable
- Be consistent
- Reduce decision fatigue