Как мы можем спроектировать.net core api контроллер для принятия значения массива строк

Я хотел бы знать, как мы можем спроектировать.net core api контроллер для принятия значения массива, как указано ниже

http://localhost:32656/api/Values?str[]="abc"&str[]="xyz"

Я провел некоторые онлайн-исследования, и я смог найти только два варианта: мне нужно передать индексы внутри массива, например: - http://localhost:32656/api/Values?str[0]="abc" & str [1] = "xyz" (передать индексы внутри массива)

или мне нужно передать массив в виде повторяющихся строк запроса. Например: - http://localhost:32656/api/Values?str="abc" & str = "xyz" (передать как повторяющиеся строки запроса)

Но я хотел бы увидеть другие возможные варианты отправки массива в.net core 2.1 api controller.

2 ответа

Решение

Вы можете воспользоваться FromQuery атрибут здесь, указывая Name собственность как str[]:

public IActionResult Values([FromQuery(Name = "str[]")] List<string> strValues)
{
    ...
}

Если вы также хотите удалить " s для каждого значения, вы можете использовать Select, Вот пример:

public IActionResult Values([FromQuery(Name = "str[]")] List<string> strValues)
{
    var strValuesWithoutQuotes = strValues.Select(x => x.Trim('"'));

    ...
}

Вот как мы это делаем:

[Route("api/v1/[controller]")]
public class TestController : Controller
{
    [HttpGet]
    public async Task Get(List<string> stringValues)
    {
        ...
    }
}

Затем вызовите конечную точку с http://localhost/api/v1/test?stringValues=string1&stringValues=string2

stringValues ​​должен иметь список значений в строке запроса

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