我们如何设计 .net core api 控制器来接受字符串数组值
how we can design .net core api controller to accept an array value of strings
我想知道我们如何设计 .net 核心 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 控制器的其他可能选项。
我们是这样做的:
[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 应该包含查询字符串中的值列表
您可以利用 FromQuery
attribute here, specifying the Name
属性 作为 str[]
:
public IActionResult Values([FromQuery(Name = "str[]")] List<string> strValues)
{
...
}
如果您还想去掉每个值的 "
,您可以使用 Select
。这是一个例子:
public IActionResult Values([FromQuery(Name = "str[]")] List<string> strValues)
{
var strValuesWithoutQuotes = strValues.Select(x => x.Trim('"'));
...
}
我想知道我们如何设计 .net 核心 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 控制器的其他可能选项。
我们是这样做的:
[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 应该包含查询字符串中的值列表
您可以利用 FromQuery
attribute here, specifying the Name
属性 作为 str[]
:
public IActionResult Values([FromQuery(Name = "str[]")] List<string> strValues)
{
...
}
如果您还想去掉每个值的 "
,您可以使用 Select
。这是一个例子:
public IActionResult Values([FromQuery(Name = "str[]")] List<string> strValues)
{
var strValuesWithoutQuotes = strValues.Select(x => x.Trim('"'));
...
}