Melhor prática para retornar erros na API da Web do ASP.NET
Eu tenho preocupações sobre a maneira como retornamos erros ao cliente.
Devolvemos o erro imediatamente jogandoHttpResponseException quando recebemos um erro:
public void Post(Customer customer)
{
if (string.IsNullOrEmpty(customer.Name))
{
throw new HttpResponseException("Customer Name cannot be empty", HttpStatusCode.BadRequest)
}
if (customer.Accounts.Count == 0)
{
throw new HttpResponseException("Customer does not have any account", HttpStatusCode.BadRequest)
}
}
Ou nós acumulamos todos os erros e enviamos de volta para o cliente:
public void Post(Customer customer)
{
List<string> errors = new List<string>();
if (string.IsNullOrEmpty(customer.Name))
{
errors.Add("Customer Name cannot be empty");
}
if (customer.Accounts.Count == 0)
{
errors.Add("Customer does not have any account");
}
var responseMessage = new HttpResponseMessage<List<string>>(errors, HttpStatusCode.BadRequest);
throw new HttpResponseException(responseMessage);
}
Este é apenas um código de exemplo, não importa se os erros de validação ou erro do servidor, eu só gostaria de saber a melhor prática, os prós e contras de cada abordagem.