Postman中POST请求无法调用.Net Core接口问题求助
解决Postman发送POST请求到.NET Core控制器时的400/415错误
刚接触Postman和.NET Core的话,遇到POST请求的400/415错误确实挺常见的,我来帮你一步步排查解决:
先搞懂错误背后的原因
- 415错误:服务器不支持你发送的请求媒体类型,说白了就是你发的请求格式和服务器期望的对不上
- 400错误:请求本身格式有问题,或者服务器没法把请求内容绑定到你的
Order模型上
第一步:给控制器Action加[FromBody]特性
这是新手最容易忽略的点!.NET Core默认对于复杂类型(比如你的Order类),需要显式指定从请求体中获取数据,否则框架可能会尝试从其他地方(比如URL参数)绑定,导致失败。修改你的控制器代码:
[HttpPost] public IActionResult Post([FromBody] Order model) { return Ok(); }
第二步:Postman的正确配置
别手动加Content-Type头,Postman会帮你自动处理:
- 切换到请求的Body标签页
- 选择raw选项,然后在右侧的下拉菜单里选JSON(这时候Postman会自动添加
Content-Type: application/json请求头) - 在编辑框里输入和
Order类结构完全匹配的JSON数据,注意属性名的大小写!.NET Core默认用camelCase序列化,比如你的Order类有Id、ProductName属性,JSON应该写成:{ "id": 1, "productName": "测试商品" }
第三步:排查模型绑定失败的细节
如果还是返回400,大概率是JSON格式错误或者模型验证没通过。你可以修改控制器代码,返回具体的验证错误信息,方便排查:
[HttpPost] public IActionResult Post([FromBody] Order model) { if (!ModelState.IsValid) { // 返回详细的验证错误,Postman里能看到具体哪个字段出问题 return BadRequest(ModelState); } return Ok(); }
第四步:确认Order类的可访问性
最后检查你的Order类是不是public的,而且需要绑定的属性有没有public的getter和setter,比如:
public class Order { public int Id { get; set; } public string ProductName { get; set; } public decimal Price { get; set; } }
按这个步骤走下来,应该就能解决你的POST请求问题了!
内容的提问来源于stack exchange,提问作者Tuvia Khusid
相关产品推荐
相关产品推荐

