Угловые 4 Параметры Запроса С Помощью HttpClient


Я искал способ передать параметры запроса в вызов API с новым HttpClientModule ' s HttpClient и еще предстоит найти решение. Со старым вы бы написали что-то вроде этого.

getNamespaceLogs(logNamespace) {

    // Setup log namespace query parameter
    let params = new URLSearchParams();
    params.set('logNamespace', logNamespace);

    this._Http.get(`${API_URL}/api/v1/data/logs`, { search: params })
}

это приведет к вызову API по следующему URL:

localhost:3001/api/v1/data/logs?logNamespace=somelogsnamespace

новая HttpClientget() метод не имеет search свойство, поэтому мне интересно, где передать параметры запроса?

7 69

7 ответов:

я в конечном итоге нашел его через intellisense на

Вы можете (в версии 5+) использовать fromObject и fromString параметры конструктора при создании HttpParamaters, чтобы сделать вещи немного проще

    const params = new HttpParams({
      fromObject: {
        param1: 'value1',
        param2: 'value2',
      }
    });

    // http://localhost:3000/test?param1=value1&param2=value2

или:

    const params = new HttpParams({
      fromString: `param1=${var1}&param2=${var2}`
    });

    //http://localhost:3000/test?paramvalue1=1&param2=value2

более краткое решение:

this._Http.get(`${API_URL}/api/v1/data/logs`, { 
    params: {
      logNamespace: logNamespace
    } 
 })

вы можете передать это так

let param: any = {'userId': 2}; this.http.get(${ApiUrl}, {params: param})

joshrathke прав.

In angular.io docs сказано, что URLSearchParams от @angular / http является устаревшим. Вместо этого вы должны использовать HttpParams от @angular / common / http. Код довольно похож и идентичен тому, что написал йошратке. Для нескольких параметров, которые сохраняются, например, в объекте типа

{
  firstParam: value1,
  secondParam, value2
}

вы также можете сделать

for(let property in objectStoresParams) {
  if(objectStoresParams.hasOwnProperty(property) {
    params = params.append(property, objectStoresParams[property]);
  }
}

Если вам нужны унаследованные свойства, то удалите свойство hasOwnProperty соответственно.

поиск свойство типа URLSearchParams на RequestOptions класс устарел в угловой 4. Вместо этого, вы должны использовать params свойство типа URLSearchParams.

Если у вас есть объект, который может быть преобразован в {key: 'stringValue'} пары, вы можете использовать этот ярлык, чтобы преобразовать его:

this._Http.get(myUrlString, {params: {...myParamsObject}});

Я просто люблю синтаксис выкладывать!