Получение полного ответа в 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" заставит выбрать соответствующую перегрузку.

Другие вопросы по тегам