复杂类型数组的 OpenApi 3 多部分表单请求
OpenApi 3 multipart form request for complex type array
我创建了一个新的 Asp.Net Core 5.0 Web API 项目,我尝试上传一个文件和其他属性。其中一个属性是我定义的其他元素的列表。数据模型如下所示:
public class Person
{
public string Surname { get; set; }
public string FamilyName { get; set; }
public IFormFile Image { get; set; }
public List<Item> Items { get; set; } = new List<Item>();
}
public class Item
{
public string Value { get; set; }
public string Description { get; set; }
}
似乎 swagger 文档生成了具有正确 UI 的正确文件。不幸的是,我不知道数据必须是哪种格式,以便 ASP.NET 核心模型活页夹将其转换为有效模型。我试图将一些 json 对象插入“项目”框中,但我的列表一直为空。
控制器动作很标准:
[HttpPost]
public ActionResult Post([FromForm] Person p)
{
if (ModelState.IsValid)
{
return Ok();
}
return BadRequest();
}
UI 看起来像这样。
到目前为止我还没有找到一个巧妙的解决方案,但我写了一个自定义模型活页夹,就像这里描述的那样。所以基本上请求有两个部分。一个是文件,一个是整个 JSON 数据。
我创建了一个新的 Asp.Net Core 5.0 Web API 项目,我尝试上传一个文件和其他属性。其中一个属性是我定义的其他元素的列表。数据模型如下所示:
public class Person
{
public string Surname { get; set; }
public string FamilyName { get; set; }
public IFormFile Image { get; set; }
public List<Item> Items { get; set; } = new List<Item>();
}
public class Item
{
public string Value { get; set; }
public string Description { get; set; }
}
似乎 swagger 文档生成了具有正确 UI 的正确文件。不幸的是,我不知道数据必须是哪种格式,以便 ASP.NET 核心模型活页夹将其转换为有效模型。我试图将一些 json 对象插入“项目”框中,但我的列表一直为空。
控制器动作很标准:
[HttpPost]
public ActionResult Post([FromForm] Person p)
{
if (ModelState.IsValid)
{
return Ok();
}
return BadRequest();
}
UI 看起来像这样。
到目前为止我还没有找到一个巧妙的解决方案,但我写了一个自定义模型活页夹,就像这里描述的那样。所以基本上请求有两个部分。一个是文件,一个是整个 JSON 数据。