In a typical REST implementation, each resource is identified by a URL, and the methods used to access the resource (e.g., GET, POST, PUT, DELETE) are defined by the HTTP standard. For example, a service might provide a URL to list all users (e.g., /users) and another URL to retrieve a specific user by id (e.g., /users/123). To create a new user, the service might accept a POST request to the /users URL with the new user data encoded as JSON in the request body.
REST has several benefits over other architectures:
System design interviews often involve designing web services, and many interviewers will give candidates the choice of using either REST or another architecture like SOAP or RPC. REST also has some advantages over other architectures when it comes to scalability and performance. For example, because REST uses HTTP caching mechanisms like ETags and Last-Modified headers, it can more easily take advantage of browser caching to improve performance. Additionally, because each resource is identified by a URL, resources can be easily load-balanced across multiple servers without requiring any changes to client code.