Understanding HTTP Verbs in APIs

Osama HaiDer
3 min readAug 18, 2024

--

When working with APIs (Application Programming Interfaces), it’s essential to understand HTTP verbs, also known as HTTP methods. These verbs dictate what action the client (like your web browser or app) wants to perform on the server. Each verb represents a different operation, such as retrieving, creating, updating, or deleting data.

1. GET: Retrieve Data

The GET method is used to retrieve information from a server. When you use GET, you're asking the server to send you specific data. It's important to note that GET requests are read-only operations, meaning they don't change any data on the server. This makes GET a safe and idempotent method—no matter how many times you send a GET request, the data will remain unchanged.

2. POST: Create Data

The POST method is used to send data to the server, typically to create a new resource. When you submit data through POST, the server processes it and usually stores it. Unlike GET, POST is not a safe operation because it can change the server's state, such as adding new records to a database. It's also not idempotent—repeated POST requests can lead to the creation of multiple resources.

3. PUT: Update Data

The PUT method is used to update existing data on the server. When you use PUT, you're essentially telling the server to replace the current version of a resource with the new data you provide. This operation is not considered safe because it modifies data, but it is idempotent. If you send the same PUT request multiple times, the result will be the same—the resource will be updated in the same way.

4. DELETE: Remove Data

The DELETE method is used to remove data from the server. When you send a DELETE request, you're instructing the server to delete a specific resource. Like PUT, DELETE is not a safe operation because it changes the server's state by removing data. However, it is idempotent, meaning if you send the same DELETE request multiple times, the result will be consistent—the resource will be deleted, and further requests will have no additional effect.

5. PATCH: Partially Update Data

The PATCH method is used for partial updates to an existing resource. Unlike PUT, which replaces the entire resource, PATCH allows you to update only specific fields. This method is useful when you don't need to send the complete data but only want to make a small change. PATCH is not safe, but it is idempotent, ensuring consistent results with repeated requests.

6. HEAD: Retrieve Headers

The HEAD method is similar to GET, but it only retrieves the headers of the response without the actual data. This can be useful for checking if a resource exists or to get metadata without downloading the entire content. Since HEAD doesn't change any data on the server, it is considered a safe and idempotent operation.

7. OPTIONS: Discover Available Methods

The OPTIONS method is used to find out which HTTP methods are allowed for a particular resource. When you send an OPTIONS request, the server responds with a list of supported methods, helping you understand what actions you can perform on the resource. OPTIONS is a safe operation as it doesn't alter any data on the server.

8. TRACE: Debugging and Diagnostics

The TRACE method is used for diagnostic purposes. When you send a TRACE request, the server echoes back the received request, allowing you to see how your request was processed. This can be helpful for debugging or tracing the path that the request takes through various servers. Because TRACE doesn't modify any data, it is considered a safe operation, but it should be used with caution as it can expose information about the request and server.

Conclusion

HTTP verbs are fundamental to interacting with APIs. They define the type of action you want to perform on the server’s resources, such as retrieving, creating, updating, or deleting data. Understanding the purpose and behavior of each HTTP verb will enable you to use APIs more effectively and build applications that communicate clearly with servers.

--

--

Osama HaiDer

SSE at TEO International | .Net | Azure | AWS | Web APIs | C#