¿Cuál es la respuesta de código de estado HTTP adecuada para una solicitud general fallida (no es un error)?

Estoy creando una API RESTful que procesará una serie de interacciones de los usuarios, incluida la realización de pedidos con tarjetas de crédito almacenadas.

En el caso de un pedido exitoso, estoy devolviendo un 200 OK, y en el caso de que la solicitud del pedido tenga un formato incorrecto o no válido, estoy devolviendo un 400 Solicitud incorrecta. Pero, ¿qué debo devolver si hay un problema durante el procesamiento real del pedido?

l pedido de @Client POSTS al servidor para un recurso de usuario. Si el usuario no existe, se devuelve 404 No encontrado.l formato del pedido y la información se validan. Si no es válido, se devuelve 400 Bad Request.e procesa @Order. Si el pedido es exitoso, se devuelve 201 Creado para el pedido. Si se encuentra un error inesperado, se devuelve un error del servidor 500.

El último paso es el problema: ¿qué devuelvo si el pedido no se completa por algún otro motivo? Los posibles escenarios podrían incluir:

Producto agotado Límite máximo de pedido del usuario alcanzado Falla en la transacción de la tarjeta de crédito (fondos insuficientes, etc.)

Esto no parece que sea apropiado para un 400 o un 500. En todo caso, podría verlo como un 400 si no hay un código mejor, la solicitud no era válida de acuerdo con las reglas comerciales. Simplemente no parece exacto.

Edit: También se encontróesta discusión existente del mismo tema. Todas las respuestas parecen apuntar al uso de códigos de estado para este tipo de violación, con alguna discusión entre el uso de 400, 409 o la extensión 422.

Respuestas a la pregunta(14)

Su respuesta a la pregunta