Advanced Topic 39 of 50 Software Engineering
REST
Architectural style using resources and standard HTTP verbs.
How it works
Representational State Transfer is an architectural style for networked APIs, built on resources identified by URLs and manipulated through a uniform interface using HTTP methods: GET to read, POST to create, PUT or PATCH to update and DELETE to remove. Servers are stateless, responses indicate cacheability, representations are commonly JSON, and status codes convey outcomes. Hypermedia, or HATEOAS, lets responses include links to next actions.
Step-by-step walkthrough
- GET /users/7 reads a resource.
- The server returns JSON with status 200.
- POST /users creates a new resource.
- PUT or PATCH updates it and DELETE removes it.
- Requests are stateless, each carries all it needs.
Where it is used
Most web and mobile back ends and public APIs expose REST-style endpoints such as GET /users/42, which are easy to cache, test and consume from any language.
Common pitfall
Many APIs called REST are really RPC over HTTP. Using verbs in URLs, ignoring status codes or changing state with GET breaks conventions. Over-fetching and many round trips for related data are common drawbacks. Version the API, use pagination, make PUT and DELETE idempotent and return clear error bodies.
Where it fits in the course
REST is topic 39 of 50 in Software Engineering, rated Advanced. It follows API Design. The next topic is GraphQL.
Practice and explore
- Open the interactive lesson, with a mini quiz.
- Take the Software Engineering quiz.
How to study this topic
- Read the explanation above and restate the definition in your own words.
- Open the interactive lesson and answer its mini quiz.
- Read the common pitfall, then write a short example that avoids it.
- Check your understanding in the Software Engineering quiz, and revisit the topic if you miss a question.
Frequently asked questions
What is REST?
Where do people use REST?
What is the most common mistake with REST?
What should I learn before this topic?
How can I practice it?
Is REST hard to learn?
How long does it take to learn REST?
Which topics are related to REST?
What should I study after REST?
Related topics
- API Design (Software Engineering)
- GraphQL (Software Engineering)
- CQRS and Event Sourcing (Software Engineering)
- Software Metrics (Software Engineering)