Me preocupa la forma en que devolvemos los errores al cliente.
¿Devuelve el error de inmediato lanzando HttpResponseException cuando recibimos un error:
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)
}
}
O acumulamos todos los errores y luego los enviamos de vuelta al 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 es solo un código de muestra, no importa ni los errores de validación ni los errores del servidor, solo me gustaría conocer las mejores prácticas, los pros y los contras de cada enfoque.
HttpResponseException
clase que tome dos parámetros mencionados en su publicación, HttpResponseException("Customer Name cannot be empty", HttpStatusCode.BadRequest)
es decirHttpResponseException(string, HttpStatusCode)
ModelState
.