#angular #http #url #get #angular9
#угловатый #http #url — адрес #получить #angular9 #angular #url
Вопрос:
Я хочу использовать http.get
метод для получения некоторых данных в ответ, но когда я хочу поставить >
, вместо этого ставится %. мой код:
let search = "class>" `${this.class};amp;city=${this.city}`;
и мой метод обслуживания таков:
getExtByClassAndCity( page_size: number, page: number, search: string,direction: string,order_by: string) {
const params = {
order_by,
direction,
page_size,
search,
page,
}
return this.http.get<any>(`${env.apiURL}sips?` `order_by=` params.order_by `amp;direction=` params.direction `amp;page_size=` params.page_size
`amp;search=` params.search `amp;page=` params.page_size);
}
и URL-адрес отправки — это
sips?order_by=ext_sips.extensionamp;direction=descamp;page_size=5amp;search=class>xxxx;amp;city=amp;page=5
Я имею в виду этот % в классе param.
Пожалуйста, скажите мне, как я могу напечатать class>xxxx
вместо class>xxxx
.
Ответ №1:
Вы можете создать объект HttpParams и добавить к нему свои параметры следующим образом:
const params = new HttpParams().set('order_by', order_by).set('direction', direction); // also for the other parameters
Тогда не создавайте весь URL самостоятельно, а добавьте HttpParams в вызов get
return this.http.get<any>(`${env.apiURL}sips`,{params});
Комментарии:
1. когда я ставлю like
return this.http.get<any>(
${env.apiURL}sips?${params});
, это выдает мне ошибку:sips?[object Object]
2.
{params}
должен быть отдельный параметр для функции get. Я обновил ответ, так что строка действительно закрывается.3. Вы правы, я изменил код метода на:
const params2 = new HttpParams().set('order_by', order_by).set('direction', direction).set('page_size', page_size.toString()) .set('search', search).set('page', page.toString()); return this.http.get<any>(
${env.apiURL} sips? $ {params2});
и он отлично работает. Спасибо, дорогой.
Ответ №2:
Ребята, это %
не вносит никаких изменений в ответ на сервер. И если вы видите, что я помещаю page_size вместо страницы в конце запроса. Теперь он должен вернуть объект из массива 6, но он возвращает только 1 строку, и я не знаю почему! Если вы знаете, почему, пожалуйста, дайте мне знать.
Ответ №3:
У вас не может быть буквального символа «>» в URI, поэтому он кодируется в процентах. Смотрите https://www.greenbytes.de/tech/webdav/rfc3986.html#percent-encoding.
Ответ №4:
Мой ответ на вопрос моего первого ответа, это было потому, что я добавил pageIndex к 1, затем я отправил этот pageIndex как страницу в URL, но моя серверная страница начинается с 0, а не с 1, поэтому, когда у меня было 6 строк, он показывает мне только последнюю строку на второй странице (потому что page_size равен 5). Это потому, что я извлекаю данные путем разбивки на страницы с сервера.