Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the HTTP status return code for a successful DELETE statement in REST?

I am studying how to Spring handle REST web services (but I don't know if it is a Spring related answer or more generically it is related only to REST concept).

So my doubt is: what exactly is the HTTP status return code for a successful DELETE statement?

Is it the 204 or the 200?

I know that the 200 means that my request was correctly fulfilled but reading online it seems to me that it I expect it after a successful GET returning content and not after a delete.

Somewhere I found that the 204 status is obtained after successful PUT or DELETE. Is it true? I can't understand, it means that the response is empty, why an empty respons means that the PUT or the DELETE operation are gone succesfull?

like image 335
AndreaNobili Avatar asked Apr 09 '15 18:04

AndreaNobili


People also ask

What is the HTTP status return code for a successful delete statement?

If a DELETE method is successfully applied, there are several response status codes possible: A 202 ( Accepted ) status code if the action will likely succeed but has not yet been enacted. A 204 ( No Content ) status code if the action has been enacted and no further information is to be supplied.

Should delete return 404 or 204?

If you DELETE something that doesn't exist, you should just return a 204 (even if the resource never existed). The client wanted the resource gone and it is gone. Returning a 404 is exposing internal processing that is unimportant to the client and will result in an unnecessary error condition.

Should Put return 200 or 204?

200 OK - This is the most appropriate code for most use-cases. 204 No Content - A proper code for updates that don't return data to the client, for example when just saving a currently edited document. 202 Accepted - If the update is done asynchronous, this code can be used.

Should post return 200 or 201?

The 200 status code is by far the most common returned. It means, simply, that the request was received and understood and is being processed. A 201 status code indicates that a request was successful and as a result, a resource has been created (for example a new page).


2 Answers

There are no strict rules on which HTTP status code is the correct one for each method. It depends on what exactly happened, what information you need to send to the client, etc. I can think of a few examples:

  • A successful DELETE, with no further information. 204 No Content

  • A successful DELETE, but you have a warning about related orphan resources that should be deleted too. 200 OK.

  • You accepted the DELETE request, but it might take a long time and you're going to do it asynchronously. The client should check it later. 202 Accepted.

  • You accepted the DELETE request, but the resource can't be removed and the URI is instead reset to a default. 205 Reset Content.

like image 117
Pedro Werneck Avatar answered Sep 24 '22 18:09

Pedro Werneck


An empty response body doesn't mean that a delete is successful, a successful delete (usually) means that the response body is empty.

There's no official status code list for RESTful APIs, but most agree that a 204 is a good response code for a successful delete, as there's usually not a good reason to return a response body after deleting something.

In general, if an operation is successful and the response body is empty return 204. If an operation is successul and the response body is NOT empty, return 200

like image 42
Neil McGuigan Avatar answered Sep 23 '22 18:09

Neil McGuigan