Qual é a resposta apropriada do código de status HTTP para uma solicitação malsucedida geral (não um erro)?

Estou criando uma API RESTful que processará várias interações do usuário, incluindo pedidos usando cartões de crédito armazenado

No caso de um pedido bem-sucedido, estou retornando 200 OK e, no caso em que a solicitação do pedido está malformada ou inválida, estou retornando uma 400 Solicitação incorreta. Mas o que devo retornar se houver um problema durante o processamento real do pedido?

edido do @Client POSTS no servidor para obter um recurso do usuário. Se o usuário não existir, 404 Não encontrado será retornad formato e as informações do @Order são validados. Se não for válido, 400 Solicitações incorretas serão retornadaOrder é processado. Se o pedido for bem-sucedido, um 201 Criado será retornado para o pedido. Se um erro inesperado for encontrado, um erro de servidor 500 será retornad

O último passo é o problema - o que eu devolvo se o pedido não for concluído por qualquer outro motivo? Os cenários possíveis podem incluir:

Produto esgotado Limite máximo de pedidos do usuário atingidoalha na transação do cartão de crédito (fundos insuficientes, etc

Isso não parece apropriado para 400 ou 500. Se algo pudesse ser visto como 400 se não houver um código melhor - a solicitação é inválida de acordo com as regras de negócios. Simplesmente não parece preciso.

Edit: Também encontradosta discussão existente do mesmo tópico. Todas as respostas parecem apontar para o uso de códigos de status para esse tipo de violação, com alguma discussão entre o uso de 400, 409 ou a extensão 422.

questionAnswers(14)

yourAnswerToTheQuestion