Получение полного ответа в Angular http Post request
Я пытаюсь получить полный ответ на запрос POST. Я прочитал, как получить полный ответ на запрос о получении, упомянутый на официальном сайте Angular. Угловой http
То, что он говорит, это добавить { observe: 'response' }
, Но это будет работать для get
запрос и не для post
запрос. post
request принимает 2-3 аргумента, поэтому я не могу отправить это как 4-й аргумент. Пожалуйста, посмотрите на мой код и дайте мне знать, что я делаю неправильно.
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
};
return this.http.post('http://localhost:3000/api/Users/login', data, httpOptions, { observe: 'response' })
.do( function(resp) {
self.setSession(resp);
});
Это дает мне ошибку, поскольку 4 аргумента не допускаются.
редактировать
Принятый ответ, кажется, не работает сейчас. Я получаю следующее
error:
error TS2345: Argument of type '{ headers: HttpHeaders; observe: string; }' is not assignable to parameter of type '{ headers?: HttpHeaders | { [header: string]: string | string[]; }; observe?: "body"; params?: Ht...'.
Types of property 'observe' are incompatible.
Type 'string' is not assignable to type '"body"'.
1 ответ
observe
должен быть частью httpOptions
как собственность.
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
}),
observe: 'response'
};
return this.http.post('http://localhost:3000/api/Users/login', data, httpOptions)
.do( function(resp) {
self.setSession(resp);
});
Итак: мне нужно было более явно объявить тип httpOptions:
const httpOptions: { headers; observe; } = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
}),
observe: 'response'
};
return this.http.post('http://localhost:3000/api/Users/login', data, httpOptions) ...
Установите следующие параметры:
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
}),
observe: 'response' as 'response'
};
Приведение "response" к "response" заставит выбрать соответствующую перегрузку.