Как сделать метод GET с параметрами и uri в конце?

#javascript #angular #typescript #api

#javascript #angular #typescript #API

Вопрос:

У меня есть API, в котором я должен выполнить вызов get с параметрами и URI в конце, но я не знаю как,

Я уже сделал метод, мне не хватает конца

API: http://henri-potier.xebia.fr/books

мой вопрос в том, как создать метод, чтобы результат давал это,

API с параметром: http://henri-potier.xebia.fr/books /{ISBN1, ISBN2, …}/Коммерческие предложения

Обслуживание

   getBook(): Observable<posts> {
    let param = new HttpParams().set('isbn', '');
    return this.http.get<posts>(this.url, {params:param});
  }
  

сообщения интерфейса

 export interface posts {

    isbn: string;
    title: string;
    price: number;
    cover:string;
    synopsis:string;
}
  

введите описание изображения здесь

Комментарии:

1. Как выглядит конечный результат?

2. Api с параметром конечный результат метода get, я буду обновлять с конечным результатом

Ответ №1:

Вы не должны использовать переменные параметры пути в вашем API в первую очередь.

Вместо «/ books/{ISBN1, ISBN2, …}/commercialOffers» рассмотрите возможность использования «/books / commercialOffers» и передайте «isbn» в качестве параметра запроса (не параметра пути);

Затем вы можете передать параметр запроса isbn в виде списка :

 let param = new HttpParams().set('isbn', ['un', 'deux', 'trois']);
  

Это должно привести к параметру запроса, например: «?isbn= un,deux,trois»

РЕДАКТИРОВАТЬ: если вы абсолютно хотите сохранить API как есть, вам придется создать URL-адрес :

 let url = apiUrl   '/books/'   isbnList.join(',')   '/commercialOffers'
  

Комментарии:

1. у меня возникает эта ошибка, когда я пытаюсь использовать ваш код: let param = new HttpParams().set(‘isbn’, [‘un’, ‘deux’, ‘trois’]); Аргумент типа ‘string[]’ не может быть присвоен параметру типа ‘string’.ts(2345)

2. тогда просто используйте [].join(‘,’) , но если вы не решили, как создается API, используйте второй метод. HttpParams создан для построения параметров запроса, а не параметров пути

3. isbnList я должен создать его как?

4. просто const isbnList = ['isbn1', 'isbn2']