Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

REST API code/message for missing parent resource

I'm looking for some guidance for the correct response code & message when requesting for a resource that forms part of another resource.

For example, a GET request on:

users/{id}

where the user does not exist would return a 404, with a message of user resource not found.

My question is, what should the following return when no user resource is found:

users/{id}/friends

I'm currently returning the same code/message as in the first example. Should I be returning a message relating specifically to the friends resource? I personally think it's more helpful to make the API client aware that the parent resource isn't found, incase you have a larger URI chain.

like image 623
canisay Avatar asked Mar 13 '13 11:03

canisay


1 Answers

In this particular example, if the point is to let the client differentiate between a friends request for a non-existent user, and a friends request for a user who simply has no friends, I think it would make the most sense to return 404 in the first case, and 200 with an empty set in the second.

In other words, "none" is a valid value for friends. There's no case where a user exists but their (potentially empty) list of friends doesn't, so there's never any ambiguity in issuing a 404 for the parent resource.

like image 141
Nick Blanchard-Wright Avatar answered Nov 08 '22 19:11

Nick Blanchard-Wright