Mam wątpliwości dotyczące sposobu, w jaki zwracamy błędy klientowi.
Czy zwracamy błąd natychmiast, zgłaszając wyjątek HttpResponseException, gdy pojawia się błąd:
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)
}
}
Lub gromadzimy wszystkie błędy, a następnie odsyłamy do klienta:
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);
}
To tylko przykładowy kod, nie ma znaczenia ani błąd sprawdzania poprawności, ani błąd serwera, chciałbym tylko poznać najlepsze praktyki, zalety i wady każdego podejścia.
HttpResponseException
klasę, która bierze dwa parametry wymienione w twoim poście - HttpResponseException("Customer Name cannot be empty", HttpStatusCode.BadRequest)
tj.HttpResponseException(string, HttpStatusCode)
ModelState
.