У мене є стурбованість тим, як ми повертаємо помилки клієнту.
Чи повертаємо ми помилку негайно, кидаючи HttpResponseException, коли ми отримуємо помилку:
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)
}
}
Або ми накопичуємо всі помилки, а потім відправляємо назад клієнту:
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);
}
Це лише зразок коду, він не має значення ні помилок перевірки, ні помилки сервера, я просто хотів би знати найкращу практику, плюси і мінуси кожного підходу.
HttpResponseException
виникає перевантаженості класу конструктором, який приймає два параметри, згадані у вашому дописі - HttpResponseException("Customer Name cannot be empty", HttpStatusCode.BadRequest)
тобтоHttpResponseException(string, HttpStatusCode)
ModelState
.