Наш API должен заменить чужой API без особых изменений из-за клиентов, но предыдущий API получал данные в той или иной форме, которые я не могу воспроизвести в ядре .net. В этом случае ModelState недействителен.
Пожалуйста, смотрите запрос клиента.
Мы используем .NET Core 2.0 MVC
Я уже пытался принять тело как IFormFile, но безуспешно из-за типа содержимого application / json. Также я попытался принять тело в качестве параметра атрибута FromForm, но тоже безуспешно.
Мой контроллер:
[Consumes("application/json")]
[HttpPost("product/set")]
public async Task<IActionResult> CreateProduct([FromBody]IEnumerable<CreateProductInput> input)
{
// Some code and returns.
}
CreateProductInput:
public class CreateProductInput
{
[Required]
[StringLength(20, ErrorMessage = "{0} cannot exceed {1} characters")]
public string id { get; set; }
[StringLength(20, ErrorMessage = "{0} cannot exceed {1} characters")]
public string name { get; set; }
}
Но клиентские запросы выглядят так:
Заголовки:
Content-Type: application/json; charset=UTF-8; boundary=--------------------------xxxxxxxxxxxxxxx
Content-Length: 1931
Body:
--------------------------xxxxxxxxxxxxxxx
Content-Disposition: attachment; name="data_file"
[
{
"id": "A1",
"name": "AAA",
}, {
"id": "A2",
"name": "BBB",
}, {
"id": "A3",
"name": "CCC",
}
]
--------------------------xxxxxxxxxxxxxxx--
Можно ли получить этот тип json-вложения с типом контента application/json
и как?