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