Как принять List <string>в методе контроллера API из тела как json? - PullRequest
0 голосов
/ 04 марта 2019

Я бы хотел отправить методу моего контроллера API json, например:

{
    "lines":
    [
        "asd1",
        "asd2"
    ]
}

enter image description here

Я пробовал эти параметры

[HttpPost]
public IActionResult Test([FromBody]List<string> lines)
{

}


[HttpPost]
public IActionResult Test([FromBody]string[] lines)
{

}


[HttpPost]
public IActionResult Test([FromBody]string lines)
{

}

Но оно всегда либо пустое, либо нулевое

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

post array строк только как -> ["str1", "str2"] и затем измените контроллер на

[HttpPost]
public IActionResult Test(List<String> lines)
{

}
0 голосов
/ 04 марта 2019

Существует несоответствие между вашим входом JSON и вашими принятыми параметрами.

Сопоставление параметров не (по крайней мере, насколько мне известно) позволяет обернуть параметры внутри объекта.

Вместо этого JSON будет передан как 1 параметр в ваш API.

Проблема здесь в том, что ваш ввод JSON содержит объект со свойством с именем "lines", который содержит ваш список, тогда как ваш APIпринимает только этот список.

Таким образом, у вас есть две опции:

  1. Измените свой JSON так, чтобы он содержал только список (массив) строк

    то есть.передайте это в вместо того JSON, который у вас сейчас есть:

    ["asd1", "asd2"]
    

    (другими словами, это весь ваш ввод, удалите { "lines": и })

  2. Измените API, чтобы принять объект

    public class LinesParameter
    {
        public List<string> Lines { get; } = new List<string>();
    }
    
    public IActionResult Test([FromBody]LinesParameter lp)
    

Любой из этих способов должен работать, вам придется решить, какойтот, на которого вы хотите пойти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...