Сделать запросы Get с параметрами

Я хочу написать в Angular Typescript этот запрос:

http://localhost:8080/engine/oauth/authorize?client_id=admin&redirect_uri=http://localhost:9000/callback&response_type=code&scope=read_profile

Когда я открываю эту ссылку в веб-браузере, я получаю ответ о перенаправлении:

http://localhost:9000/callback?code=7CLwgh 

Я попытался написать этот код Typescript:

authCodeRequest(name: string, password: string): Observable<any> {
    const body = new HttpParams()
      .set('client_id', 'admin')
      .set('redirect_uri', 'http://localhost:9000/callback')
      .set('response_type', 'code')
      .set('scope', 'read_profile');
    const headers = new HttpHeaders({
      'Content-Type': 'application/x-www-form-urlencoded',
    });

    return this.httpClient
      .get(environment.api.urls.auth.token, body.toString(), {
        headers
      })
      .pipe(
        map((response: Authorize) => {
          console.log(data)
          return true;
        })
      );
  }

Я получаю эту ошибку для запроса на получение: TS2554: Ожидается 1-2 аргумента, но получено 3.

Как правильно сделать запрос и получить результат по параметру перенаправленной ссылки code?


person Peter Penzov    schedule 03.08.2020    source источник


Ответы (1)


Вы пытаетесь выполнить POST, но на самом деле выполняете GET. Замените httpClient.get на httpClient.post.

Если вы действительно хотите выполнить GET, вы не можете использовать x-www-form-urlencoded. Параметры вашего запроса будут добавлены к URL-адресу запроса.

let params= new HttpParams()
  .set('client_id', 'admin')
  .set('redirect_uri', 'http://localhost:9000/callback');
let options = { params: params };
return this.httpClient
  .get(environment.api.urls.auth.token, options)
  .pipe();
person corradolab    schedule 03.08.2020
comment
Я хочу сделать GET. Как мне это реализовать? - person Peter Penzov; 04.08.2020
comment
Спасибо за обновление. Последний вопрос: когда я получаю в качестве ответа http://localhost:9000/callback?code=7CLwgh, как я могу получить результат в pipe() и получить значение code? - person Peter Penzov; 04.08.2020
comment
Не уверен, что сможете, пока тело ответа не будет содержать то же значение. См. stackoverflow.com /вопросы/36885556/ - person corradolab; 04.08.2020