@danilr

Как правильно делать запросы к API в ангуляр 7?

Нужно сделать запрос к API https://developers.themoviedb.org/3
Мне необходимо указать два параметра, один "api_key", второй динамически "query" = "Matrix"(например).
Тут пытался сделать, но, видимо, что-то не так делаю
export class AppComponent {
  title = 'FinderFilms';

  baseURL: string = "https://api.themoviedb.org/3";
  route: string = "/movie/search"
  response: any;
  
  constructor(private http: HttpClient){

  }
  search(){
    const params = new HttpParams().set('api_key', 'd6a5ac2d3d7cab11a084ca8080421b20, 'title',"Матрица");
    const options = {params: params};
    this.http.get(this.baseURL+this.route , options)
    .subscribe((response) =>{
      this.response = response;
      console.log('response: ', response);
    })
  }
}

Как мне указывать параметры динамически и как это правильно оформить?
В ангуляре новичок, поэтому если вы знаете ответ, очень прошу разжевывать ответ:)
  • Вопрос задан
  • 474 просмотра
Решения вопроса 1
@msdosx86
search(title: string): void {
  const params = new HttpParams()
    .set('api_key', 'd6a5ac2d3d7cab11a084ca8080421b20')
    .set('title', title);
  const url = 'https://api.themoviedb.org/3/movie/search';
  this.httpClient.get(url, { params })
    .subscribe(console.log);
}


Это ужасный, но понятный для вас пример. Вызовы к API надо выносить в сервисы, метод `subscribe` никогда не вызывайте в методах, только один раз в OnInit, а потом дергать его с помощью `.next`.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@sidni
Php Developer
В гет запросах параметры надо/можно указывать в параметры урла
https://api.themoviedb.org/3/movie/search?title=Ма...
Хотя по коду у вас еще третий параметр вырисовывается query
А вообще поидеи вам нужно делать сервис по работе с апи чтобы не дублировать код для сбора запроса и исходных данных и этот сервис инжектить в компонент вместо httpclient
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы