Digamos que hay un Producto con Pedidos. Si solicita/products/product_id, devolverá un 404 si product_id no existe. ¿Pero should/products/product_id/orders devuelve un 404 si no hay pedidos para este producto o debería devolver un array vacío?¿Debería una API RESTful devolver 404 para matrices de objetos?
Respuesta
Devolveré una colección vacía. Un producto con cero pedidos es un concepto completamente válido, por lo que la existencia de una colección de órdenes vacía tiene más sentido que un 404, que podría inferir que este producto no tiene una colección de pedidos.
+ 1, Fuimos de esta manera y me siento feliz con la decisión. – ale
¿Deben considerarse los pedidos como un recurso en sí mismo? o una información devuelta por el recurso product_id? – chernevik
Chernevik Sí. Si es una URL diferente y puede devolver un 200, entonces es un recurso diferente. El servidor puede manejar ambos recursos usando el mismo controlador, pero son dos recursos diferentes. –
realmente se debe hacer sólo una de dos cosas
Cualquiera de devolver un código de estado 200 (OK)
, y una matriz vacía en el cuerpo.
O Devuelva 204 (NO CONTENT)
código de estado y NO cuerpo de respuesta.
Para mí, la opción 2 parece más técnicamente correcta y se mantiene en línea con los principios de REST y HTTP.
Sin embargo, la opción 1 parece ser más eficiente para el cliente, porque el cliente no necesita lógica adicional para diferenciar entre dos códigos de estado (satisfactorios). Ya que sabe que siempre recibirá un arreglo, simplemente tiene que comprobar si se consiguió ninguno, uno o muchos artículos y procesar adecuadamente
En mi opinión:
Estamos hablando de valores de estado HTTP aquí, y debería ser de un nivel más alto de dar respuestas.
Uno debería ver esto en capas de delegados. Al igual que cuando su API no puede responder a una solicitud, en caso de que la llamada api no esté disponible, puede responder con un 404.
Pero cuando su llamada existe, y podría responder con una colección de datos, pero es una colección vacía, puede devolver solo un http 200, con un resultado vacío.
Utilizaría los valores de estado http para dar una indicación sobre la validación de la solicitud, y no hacerlo directamente dependiente del contenido en las capas de API más profundas.
O uno podría seguir estrictamente los protocolos que se encuentran en la red, pero nadie los sigue ...
No devolver matrices. Devolver un objeto, en cualquier caso, al igual que
{
offset: 30,
limit: 10,
arr: []
}
que le permite añadir metadatos (por paginación o Smth otra cosa)
normalmente con código de estado HTTP: 200
Además, este es el comportamiento de API web convencional, impulsado por seguridad preocupaciones: https://www.owasp.org/index.php/OWASP_AJAX_Security_Guidelines#Always_return_JSON_with_an_Object_on_the_outside
- 1. Mimetypes para una API RESTful
- 2. ¿Por qué debería una API devolver 'nulo'?
- 3. ¿Debería este resultado Json devolver un 404 o 200?
- 4. ¿Cómo modelar una API RESTful con herencia?
- 5. ¿Tiene Netsuite una API RESTful?
- 6. ¿Debería un URI dado en una arquitectura RESTful devolver siempre la misma respuesta?
- 7. ¿Cómo debería diseñar una URL RESTful para validar un objeto
- 8. ¿Cómo debo tratar las jerarquías de objetos en una API RESTful?
- 9. Cómo usar jQuery.map() en una matriz de objetos para devolver la matriz de matrices
- 10. Devolver códigos de respuesta RESTful en Play
- 11. Necesito una API. ¿Donde debería empezar?
- 12. RESTful sugerencias de claves API
- 13. API RESTful: ¿requiere una cadena de agente de usuario?
- 14. ¿Existe una API de Restful Blog
- 15. RESTful Zend Framework API
- 16. ¿Hay una API (RESTful) para las páginas man de linux?
- 17. Restful API authentication recommendation?
- 18. Asp.Net Web Api - Devolver 404 para IEnumerable <T> Obtener cuando nulo
- 19. API RESTful para proyectos/aplicaciones Django
- 20. ¿Qué debe devolver una RESTful API POST/DELETE en el cuerpo?
- 21. Carga útil de respuesta de paginación de una API RESTful
- 22. Consumir una API RESTful con Django
- 23. Un estado HTTP distinto para el inicio de sesión no autorizado en una RESTful API
- 24. Escribiendo un cliente para una API RESTful (hipermedia)
- 25. matrices de objetos nudosos
- 26. ¿Cuál debería ser el estándar para las URL ReSTful?
- 27. CherryPy y RESTful web api
- 28. Diseño de API para funciones que actúan en matrices
- 29. Consumir API RESTful con Java
- 30. RESTful JSON API Documentation Generator
yo Puedes definir tus propios resultados. Dé a cada resultado una identificación diferente – Grumpy
+1: Estamos debatiendo la misma pregunta en este momento, con colecciones de ofertas de video. –
@Grumpy ¿Puedes explicar un poco más lo que quieres decir? – rbp