我们如何设计.net核心api控制器以接受字符串的数组值

时间:2019-01-10 17:54:05

标签: api asp.net-core .net-core .net-core-2.1

我想知道我们如何设计.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控制器的其他可能选项。

2 个答案:

答案 0 :(得分:2)

您可以在此处利用FromQuery属性,将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('"'));

    ...
}

答案 1 :(得分:0)

这是我们的操作方式:

[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应该在查询字符串中具有值列表