У меня есть проект Angular 6. И я отправляю свой запрос в .NET Core 2.1 Web API. Я отправляю список фруктов, как показано ниже. Но мои данные, поступающие на C#, содержат только один элемент, например "'apple', 'orange', 'banana'"
. Но мне нужны три разные струны. Как я могу этого добиться? Пожалуйста, не советуйте использовать метод "POST"
Угловая сторона
getFruitDetails() {
let params = new HttpParams();
params = params.append('fruitType', '35');
params = params.append('fruits', JSON.stringify(['apple', 'orange', 'banana']));
return this.http.get('https://localhost:5000/api/Fruit/GetFruitDetails', { params: params });
}
Сторона C#
public GetFruitDetails([FromQuery] FruitModel fruitModel)
{...}
public class FruitModel
{
public int FruitType { get; set; }
public List<string> Fruits { get; set; }
}
Что такое параметры запроса? Когда я гуглил, все результаты были HttpParams. @PardeepJain
Отправка параметров с использованием ?
в url, например https://localhost:5000/api/Fruit/GetFruitDetails/?fruit1=apple&fruit2=banana...
Большое спасибо за ответ @PardeepJain. Я не хочу, чтобы строки конкатенировались. Итак, я использую HttpParams
. Решение MarcusHöglund
- это то, что я искал.
Атрибут FromQuery
добавит все параметры запроса, соответствующие fruits=value
из строки запроса, в список Fruits.
Поэтому составьте параметры как
getFruitDetails() {
let params = new HttpParams();
params = params.append('fruitType', '35');
params = params.append('fruits', 'apple');
params = params.append('fruits', 'orange');
params = params.append('fruits', 'banana');
return this.http.get('https://localhost:5000/api/Fruit/GetFruitDetails', { params: params });
}
Большое спасибо @ MarcusHöglund. Это сработало. Но это обычный способ или хитрый?
@HasanOzdemir - это то, как работает атрибут FromQuery. Стандартный способ :)
@ D-johnAnshani, зачем ему это делать? Атрибут FromQuery элегантно решает эту проблему. Зачем усложнять его, проверяя его вручную
Я думаю, твой путь неправильный @ D-johnAnshani. Потому что в строках может быть запятая. И тогда этот способ дал неверный результат.
Вам не нужно передавать их по одному с params.append
, вы можете добавить массив ... только не JSON.Stringify()
это
Почему бы не использовать
queryParams
?