У меня есть серверная конечная точка ExpressJS, которая выглядит (образно) следующим образом:
function myFunction(req, res, next) {
if (someErrorCondition)
res.status(400).json({message: "Something went wrong."});
else {
myBackendService.someFunc.then(res.status(200).json({message: "Success!"}))
.catch(err => next(err))
}
}
И из внешнего компонента Angular я запрашиваю эту конечную точку через подписку:
this.myFrontendService.someFunc().subscribe(
res => {
console.log(res);
},
error => {
console.log(error);
});
Когда вызов выполняется правильно (т.е. состояние 200), регистрирует (как и ожидалось) объект JSON {message: "Success!"}
как объект res
. Но когда он терпит неудачу, он регистрирует:
Http failure response for http://localhost:4000/myRoute/myFunction: 400 Bad Request
И я нигде не получаю сообщение «Что-то пошло не так». что я отправил из бэкэнда. Коды ошибок обрабатываются по-разному в Angular?
Кроме того, когда я вызываю конечную точку серверной части с помощью cURL, оба сообщения возвращаются как JSON объекты, как и ожидалось.
EDIT: myFrontService class объявление выглядит так:
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class FrontendService {
constructor(private http: HttpClient) { }
someFunc() {
return this.http.put(`localhost:4000/myRoute/myFunction`, {data: "here's some data"});
}
}