#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']