如何将文件和 json 对象从邮递员传递到 asp.net 核心 webapi
Posted
技术标签:
【中文标题】如何将文件和 json 对象从邮递员传递到 asp.net 核心 webapi【英文标题】:How to pass a file and json object from a postman to asp.net core webapi 【发布时间】:2019-08-04 18:56:23 【问题描述】:我有一个带有以下签名的 post 方法,
[HttpPost] public ActionResult SavePriorAuthorization(MainPriorAuthorization priorAuthorization, IFormFile 文件)
现在我想从邮递员那里传递对象和文件。我尝试了以下不起作用的选项。
这会报错,System.ArgumentNullException: Value cannot be null.Parameter name: header
标题类型:multipart/form-data
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:我通常做的是创建一个像这样的 ViewModel:
public class MainPriorAuthorizationViewModel
public IFormFile File get; set;
public string TestName get; set;
然后创建一个带有 [FromForm] 属性的动作,以便它知道它需要从哪里映射:
[HttpPost]
public void Post([FromForm]MainPriorAuthorizationViewModel priorAuthorization)
//do logic
然后在我的邮递员中它看起来像这样:
希望对你有帮助
【讨论】:
【参考方案2】:尝试更改MainPriorAuthorization模型中key的设置,可以直接将模型的属性名设置为Postman中的key。
以下是我测试并运行良好的示例代码:
嘉宾模特
public class Guest
public int Id get; set;
public string Name get; set;
在参数中添加[FromForm]
属性
[HttpPost]
public void SaveGuest([FromForm]Guest guest,IFormFile file)
邮差截图
【讨论】:
以上是关于如何将文件和 json 对象从邮递员传递到 asp.net 核心 webapi的主要内容,如果未能解决你的问题,请参考以下文章
传递需要的大量 Json 对象时如何改进 Asp.net Mvc 应用程序?
如何将两个不同的对象传递给邮递员中的 POST 请求以测试 RESTful API?