Estou procurando orientação sobre boas práticas quando se trata de retornar erros de uma API REST. Estou trabalhando em uma nova API para que eu possa tomar qualquer direção no momento. Meu tipo de conteúdo é XML no momento, mas pretendo oferecer suporte a JSON no futuro.
Agora estou adicionando alguns casos de erro, como por exemplo, um cliente tenta adicionar um novo recurso, mas excedeu sua cota de armazenamento. Já estou lidando com certos casos de erro com códigos de status HTTP (401 para autenticação, 403 para autorização e 404 para URIs de solicitação incorreta). Examinei os abençoados códigos de erro HTTP, mas nenhum do intervalo 400-417 parece certo para relatar erros específicos de aplicativos. Então, no começo, fiquei tentado a retornar meu erro de aplicativo com 200 OK e uma carga XML específica (ou seja, pague-nos mais e você obterá o armazenamento de que precisa!), Mas parei para pensar sobre isso e parece que está ensaboado (/ encolher de ombros horrorizado). Além disso, parece que estou dividindo as respostas de erro em casos distintos, pois alguns são baseados no código de status http e outros são direcionados ao conteúdo.
Então, quais são as recomendações da indústria? Boas práticas (explique o porquê!) E também, de um cliente pov, que tipo de tratamento de erros na API REST facilita a vida do código do cliente?