Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTTP status code for a REST search without result

I have a REST endpoint for a search.

GET /person?firstname=john&name=smith

As result a collection with the HTTP status code 200 OK is returned:

[
   {
      "id":11,
      "firstname":"John",
      "name":"Smith",
      "birthday":"1996-03-08"
   },
   {
      "id":18,
      "firstname":"John",
      "name":"Smith",
      "birthday":"1963-07-11"
   }
]

What is the correct HTTP status code and payload for a empty search result?

  • HTTP Status 200 OK with a empty collection []

  • HTTP Status 204 No Content with a empty collection []

  • HTTP Status 204 No Content with a empty body

like image 442
Daniel Käfer Avatar asked Aug 06 '26 19:08

Daniel Käfer


2 Answers

I would recommend:

HTTP Status 200 OK with a empty collection []

The reason is that 204 means there is no content to send back and that is not what the result of your call is.

In your case, there IS something to send back. It's a Json result that happens to be composed of an empty collection.

UPDATE:

From the HTTP protocol definition:

10.2.5 204 No Content: The server has fulfilled the request but does not need to return an entity-body, and might want to return updated metainformation.

And:

The 204 response MUST NOT include a message-body, and thus is always terminated by the first empty line after the header fields.

like image 73
JuanR Avatar answered Aug 08 '26 17:08

JuanR


IMO the first case:

  • HTTP Status 200 OK with a empty collection []

Then you don't have to check for the 204 and use what is returned, which is an empty list.

like image 26
LLL Avatar answered Aug 08 '26 16:08

LLL



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!