2010-12-02 14 views
11

Nuestro equipo está desarrollando aplicaciones RESTFul ... estamos debatiendo el enfoque de "MEJORES PRÁCTICAS".RESTO: asignación 404 códigos de estado HTTP

¿Debería devolverse la respuesta del código de estado 404 para una consulta tipo filtro? Di mi URL GET es

.../1 ​​/ servicio/startsWith/a.json

y devuelve todos los valores que comienzan con A en mi base de datos ... pero si no se encuentran los valores de "a" ¿Debería devolver el código de estado 200 con una cadena json vacía? o código de estado 404.

¡Gracias!

Respuesta

15

Consulte this pregunta, en la actualización de mi respuesta me dirijo a su problema. Específicamente este bit,

creo que la respuesta a si a retorno 404 depende de la cual es el recurso que se está recuperando. ¿Es una representación de un resultado de búsqueda , o es una representación de un producto ? Para saber esto, realmente necesita para ver la relación de enlace que llevó a a la URL.

Si la URL se supone que devuelve una representación Producto luego un 404 debe ser devuelto si el código no existe . Si la URL devuelve un resultado de búsqueda entonces no debería devolver un 404.

el resultado final es que lo que la URL parece que no es el factor determinante . Una vez dicho esto, es convención que las cadenas de consulta se usan para devolver los resultados de búsqueda, por lo que es más intuitivo usar ese estilo de URL cuando no desea devolver 404s.

+5

Sí, estoy de acuerdo con Darrel. Simplemente, "sin resultados" es un resultado de búsqueda válido. El recurso existe, su representación es simplemente "vacía". Entonces, 404 no está justificado. Pedir un recurso concreto por un identificador (/ customers/123) que no existe requiere un 404. Eso no es una consulta, eso es más una "desreferencia" de un puntero. –

3

Puede ser más sensato devolver un código 204, que significa 'Sin contenido'. Esto sería un poco más eficiente ya que un estado 204 no puede tener ningún contenido de documento, además puede detectar el código en lugar de tener que analizar la respuesta.

Cuestiones relacionadas