Я немного сбит с толку, как я должен отправлять свои ответы из моего веб-API в Angular 6 SPA.Для начала я использовал BadRequestErrorMessageResult, как это
[HttpGet()]
public IHttpActionResult Error1()
{
//... some error
return BadRequest("Error1");
}
Но если бы мне пришлось вернуть 403, я бы пошел
[HttpGet()]
public IHttpActionResult Error2()
{
//..Error occured..
return ResponseMessage(Request.CreateResponse(HttpStatusCode.Forbidden, "Error2"));
}
Тогда я читал руководство по обработке ошибок https://angular.io/guide/http и попробовал что-то очень похожее на пример.
Я хотел показать сообщение пользователю.
handleError(err: HttpErrorResponse) {
let errorMessage = '';
if(err.error instanceof ErrorEvent) {
errorMessage = err.error.message
} else {
errorMessage = err.error;
}
return throwError(errorMessage);
}
Но я обнаружил, что эти различные методы возвращают типыне очень хорошо отображаются в Angular.
Если я использую BadRequest("Error1")
, мое сообщение будет отображаться в
err.error.Message
Если я использовал
ResponseMessage(Request.CreateResponse(HttpStatusCode.Forbidden, "Error2"));
это появилось бы в
err.error
Мне было интересно, можно ли было использовать оба типа ответа в моем бэкэнде и получить аналогичный ответ для обработки в SPA.
Полагаю, я всегда мог использовать версию ResponseMessage
, чтобы знать, что ошибка будет понятна повсюду в SPA, но я не могу быть уверен, что кто-то еще в команде не будет использовать метод BadRequest
.