#angular #http
#angular #http
Вопрос:
У меня есть интерфейс, подобный приведенному ниже
export interface ValueList {
attributeId: number;
attributeName: string;
}
И мой HTTP-запрос GET выглядит следующим образом
public getData(columnId: number, columnName: string) {
const url = './assets/portfoliolist.json';
return this.httpClient.get(`${url}?attributeId=${columnId}amp;attributeName=${columnName}`);
}
Итак, в основном я не использую интерфейс, который я определил. Я не совсем уверен, как я могу использовать этот интерфейс в запросе GET для создания параметров запроса? Пожалуйста, предложите. Спасибо.
Комментарии:
1. Из интереса, может ли сервер обрабатывать параметры запроса, когда вы извлекаете статические файлы json?
Ответ №1:
Вариант 1:
getData
объявляет единственный параметр (типа ValueList
), значения которого извлекаются с помощью деструктурирования следующим образом:
public getData({ attributeId, attributeName }: ValueList) {
const url = './assets/portfoliolist.json';
return this.httpClient.get(`${url}?attributeId=${attributeId}amp;attributeName=${attributeName}`);
}
Вариант 2:
public getData(p: ValueList) {
return this.httpClient.get(`${url}`, { params: new HttpParams({ fromObject: p}) });
}
Ответ №2:
Если вы хотите сделать это внутри метода getData, вы можете сделать это следующим образом.
public getData(columnId: number, columnName: string) {
const url = './assets/portfoliolist.json';
const valueList: ValueList = { attributeId: columnId, attributeName: columnName };
let httpParams = new HttpParams();
httpParams = httpParams.append('attributeId', valueList.attributeId.toString());
httpParams = httpParams.append('attributeName', valueList.attributeName);
return this.httpClient.get(
url,
{
params: httpParams
}
);
}
Вы также можете извлечь код генерации модели и параметров запроса в любое место по мере необходимости и передать параметр запроса в качестве входных данных методу getData.