как мы можем спроектировать .net core api контроллер для принятия значения массива строк - PullRequest
0 голосов
/ 10 января 2019

Я хотел бы знать, как мы можем спроектировать .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 ]

0 голосов
/ 10 января 2019

Здесь вы можете воспользоваться атрибутом 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('"'));

    ...
}
0 голосов
/ 10 января 2019

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

[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 ​​должен иметь список значений в строке запроса

...