REST verbs specify an action to be performed on a specific resource or a collection of resources. When a request is made by the client, it should send this information in the HTTP request:
- REST verb
- Header information
- Body (optional)
As we mentioned previously, REST uses the URI to decode its resource to be handled. There are quite a few REST verbs available, but six of them are used frequently. They are as follows:
- GET
- POST
- PUT
- PATCH
- DELETE
- OPTIONS
If you are a software developer, you will be dealing with these six most of the time. The following table explains the operation, target resource, and what happens if the request succeeds or fails:
REST Verb | Action | Success | Failure |
GET | Fetches a record or set of resources from the server | 200 | 404 |
OPTIONS | Fetches all available REST operations | 200 | - |
POST | Creates a new set of resources or a resource | 201 | 404, 409 |
PUT | Updates or replaces the given record | 200, 204 | 404 |
PATCH | Modifies the given record | 200, 204 | 404 |
DELETE | Deletes the given resource | 200 | 404 |
The numbers in the Success and Failure columns of the preceding table are HTTP status codes. Whenever a client initiates a REST operation, since REST is stateless, the client should know a way to find out whether the operation was successful or not. For that reason, HTTP has status codes for the response. REST defines the preceding status code types for a given operation. This means a REST API should strictly follow the preceding rules to achieve client-server communication.
All defined REST services have the following format. It consists of the host and API endpoint. The API endpoint is the URL path which is predefined by the server. Every REST request should hit that path.
Let us look at all the verbs in more detail. The REST API design starts with the defining of operations and API endpoints. Before implementing the API, the design document should list all the endpoints for the given resources. In the following section, we carefully observe the REST API endpoints using PayPal's REST API as a use case.