首页 > 解决方案 > 用于收集嵌套对象的 ASP .Net Core Http [GET]

问题描述

我想在查询字符串中使用嵌套对象的集合,例如

public class Range 
{
  public decimal From {get;set},
  public decimal To {get;set}
} 

public class SearchParams 
{
  public IEnumerable<Range> Sizes {get;set;}
}

我知道最好为此使用 POST,但由于向后兼容性,我无法更改现有合同

所以问题是 - 是否有任何选项可以在查询字符串中传递它?或将其作为字符串传递并在服务器中解析

标签: asp.net-corehttp-get

解决方案


假设你的 action 方法接收到一个SearchParamsas 参数,它被命名为para

public IActionResult Index(SearchParams para)
{
    return new JsonResult(para);
}

您可以发送如下GET请求:

GET https://localhost:44386/?para.sizes[0].from=1.1&para.sizes[0].To=1.2&para.sizes[1].from=2.1&para.sizes[1].To=2.2& HTTP/1.1

请求参数 :

para.sizes[0].from=1.1&para.sizes[0].To=1.2&para.sizes[1].from=2.1&para.sizes[1].To=2.2

响应将是:

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
Server: Kestrel
X-SourceFiles: =?UTF-8?B?RDpccmVwb3J0XDIwMThcMTBcMTFcU08uR2V0Q29sbGVjdGlvblxBcHA=?=

{
  "sizes": [{
    "from": 1.1,
    "to": 1.2
  }, {
    "from": 2.1,
    "to": 2.2
  }]
}

推荐阅读