【问题标题】:ASP .Net Core Http [GET] for collection of nested objects用于收集嵌套对象的 ASP .Net Core Http [GET]
【发布时间】:2018-10-11 09:32:13
【问题描述】:

我想在查询字符串中使用嵌套对象的集合 喜欢

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-core http-get


    【解决方案1】:

    假设你的action方法接收到一个SearchParams作为参数,它被命名为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
      }]
    }
    

    【讨论】:

    • @user681055:如果从该查询字符串的怪物中不明显,您应该避免通过 GET 发送复杂的请求数据。改为 POST。
    猜你喜欢
    • 2017-11-22
    • 2020-01-26
    • 2020-12-08
    • 1970-01-01
    • 2018-11-27
    • 2023-03-17
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    相关资源
    最近更新 更多