我们如何设计 .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('"'));

    ...
}