Угловой параметр списка строк отправки методом GET

У меня есть проект 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; }
}

Почему бы не использовать queryParams?

Pardeep Jain 18.12.2018 13:06

Что такое параметры запроса? Когда я гуглил, все результаты были HttpParams. @PardeepJain

realist 18.12.2018 13:08

Отправка параметров с использованием ? в url, например https://localhost:5000/api/Fruit/GetFruitDetails/?fruit1=app‌​le&fruit2=banana...

Pardeep Jain 18.12.2018 13:10

Большое спасибо за ответ @PardeepJain. Я не хочу, чтобы строки конкатенировались. Итак, я использую HttpParams. Решение MarcusHöglund - это то, что я искал.

realist 18.12.2018 13:14
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
3 207
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Атрибут 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. Это сработало. Но это обычный способ или хитрый?

realist 18.12.2018 13:11

@HasanOzdemir - это то, как работает атрибут FromQuery. Стандартный способ :)

Marcus Höglund 18.12.2018 13:14

@ D-johnAnshani, зачем ему это делать? Атрибут FromQuery элегантно решает эту проблему. Зачем усложнять его, проверяя его вручную

Marcus Höglund 18.12.2018 13:16

Я думаю, твой путь неправильный @ D-johnAnshani. Потому что в строках может быть запятая. И тогда этот способ дал неверный результат.

realist 18.12.2018 13:16

Вам не нужно передавать их по одному с params.append, вы можете добавить массив ... только не JSON.Stringify() это

Jcl 18.12.2018 13:26

Другие вопросы по теме