Angular2 HttpParams не отправлено, как ожидалось

При отправке запроса GET с параметрами запроса с использованием Angular2 http отправленные параметры отправляются не так, как я ожидал. Вместо стандартной пары ключ-значение, например

key1=val1&key2=val2

Он отправляется как объект HttpParams, например

%7B%22param%22:%key1%22,%22value%22:%22val1%22,%22op%22:%22a%22%7D

* Декодируется:{"param":"key1","value":"val1","op":"a"}

Ниже приведен фрагмент моего кода:

  getAllPlayers(fantasyFormat: string, draftFormat: string): Observable<Player[]> {
    let params = new HttpParams();
    params = params.append('fantasyFormat', fantasyFormat);
    params = params.append('draftFormat', draftFormat);

    return this.http.get(this.playersUrl, {params: params})
      .map((res: Response) => res.json())
      .catch((error: any) => Observable.throw(error.json().error || 'Server error'));
  }

Не уверен, что здесь происходит не так, похоже, что это согласуется с другими примерами, которые я использовал...

1 ответ

Решение
 getAllPlayers(fantasyFormat: string, draftFormat: string): Observable<Player[]> {
    return this.http.get(`${this.playersUrl}?fantasyFormat=${fantasyFormat}&draftFormat=${draftFormat}`)
      .map((res: Response) => res.json())
      .catch((error: any) => Observable.throw(error.json().error || 'Server error'));
  }

Я бы предложил сделать это так. Я не вижу необходимости использовать HttpParams здесь. Также я никогда не использовал их в своем коде. Я прочитаю о них, но мне кажется, что между этими случаями нет разницы, кроме синтаксиса и кодировки URI.

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