Перегрузить заголовки и параметры запроса с помощью HttpClient get

В HttpClientModule есть метод передачи заголовков и параметров для получения запроса.

   import { HttpHeaders, HttpParams, HttpClient } from @angular/common/http';

   const headers = { headers: new HttpHeaders({}) }
   let params = new HttpParams({ });
   get(url, {params}) // http client get with params
   get(url, {headers}); //http client get with headers 

Я хочу, чтобы что-то вроде requestoptions содержало оба или синтаксис, чтобы httpClient отправлял заголовки и параметры запроса.

В настоящее время создается полный URL-адрес с параметрами поиска и отправкой заголовков.


person Rk R Bairi    schedule 15.02.2018    source источник
comment
https://angular.io/api/common/http/HttpClient#get. Вы можете передать все это как часть объекта параметров.   -  person R. Richards    schedule 16.02.2018
comment
не удалось построить правильный синтаксис, попытался получить (url, options: {headers: headers, params: params});   -  person Rk R Bairi    schedule 16.02.2018
comment
Это может помочь с параметрами. Заголовки должны работать аналогичным образом. Пример Заголовки.   -  person R. Richards    schedule 16.02.2018


Ответы (2)


Вот что-то, что передает заголовки и параметры с помощью get и использует HttpParamsOptions для сериализации объекта в параметры, с которыми может справиться HttpClient.

localvar: any;

const headers = new HttpHeaders().set('Content-Type', 'application/json');

const myObject: any = { this: 'thisThing', that: 'thatThing', other: 'otherThing'};
const httpParams: HttpParamsOptions = { fromObject: myObject } as HttpParamsOptions;

const options = { params: new HttpParams(httpParams), headers: headers };

this.httpClient.get<any>('https://server:port/api/endpoint', options)
  .subscribe((data: any) => {
      this.localvar = data;
});
person R. Richards    schedule 16.02.2018

Начиная с Angular 5.0.0-beta.6 (2017-09-03), теперь вы можете передавать как заголовки, так и параметры, используя следующий синтаксис:

const httpOptions = {
  headers: { 'Content-Type': 'application/json' },
  params: {'include': 'somethingCool'}
};

this.http.get('http://www.example.org', httpOptions);

Источник: https://github.com/angular/angular/pull/18490.

person Keven    schedule 01.05.2019