Ich habe Bedenken hinsichtlich der Art und Weise, wie wir Fehler an den Kunden zurücksenden.
Geben wir den Fehler sofort zurück, indem wir HttpResponseException auslösen, wenn wir einen Fehler erhalten:
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)
}
}
Oder wir sammeln alle Fehler und senden sie an den Kunden zurück:
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);
}
Dies ist nur ein Beispielcode. Es spielt keine Rolle, ob es sich um Validierungsfehler oder Serverfehler handelt. Ich möchte nur die Best Practice sowie die Vor- und Nachteile der einzelnen Ansätze kennen.
HttpResponseException
Klasse, die zwei in Ihrem Beitrag erwähnte Parameter HttpResponseException("Customer Name cannot be empty", HttpStatusCode.BadRequest)
HttpResponseException(string, HttpStatusCode)
ModelState
.