ASP .Net Core Http [GET] для сбора вложенных объектов - PullRequest
0 голосов
/ 11 октября 2018

Я хочу использовать коллекцию вложенных объектов в строке запроса, например

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

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

Я знаю, что для этого лучше использовать POST, но я не могу изменить существующий контракт из-за обратной совместимости

Итак, вопрос - есть ли возможность передать его в строке запроса?или передать его в виде строки и проанализировать его на сервере

1 Ответ

0 голосов
/ 11 октября 2018

Предположим, что ваш метод действия получает 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
  }]
}
...