ASP.NET Core Web API接收Post JSON对象失败,请求排查
解决ASP.NET Core Web API无法接收Postman提交的JSON对象问题
看到你遇到的这个400错误,提示"A non-empty request body is required.",这说明你的Web API没有正确接收到Postman发送的请求体,我帮你梳理几个最常见的排查和解决步骤:
第一步:检查Postman的请求配置(最容易踩坑的地方)
这是绝大多数人遇到这个问题的核心原因,一定要仔细核对:
- 确认请求方法是POST:你的
Test方法标记了[HttpPost],所以Postman顶部的方法必须选POST,不能是GET或者其他类型。 - 设置正确的请求头:切换到Postman的
Headers标签,添加一条键值对:- 键:
Content-Type - 值:
application/json
这个头是告诉ASP.NET Core:"我发送的是JSON格式的数据,请按JSON规则解析",没有它的话,[FromBody]特性根本无法触发JSON绑定逻辑。
- 键:
- 正确填写请求体:切换到
Body标签,选择raw选项,然后在右侧的格式下拉框里选JSON,输入符合Person类结构的JSON内容,比如:
{ "FirstName": "Keith", "LastName": "Smith", "Age": 28 }
注意不要选form-data或者x-www-form-urlencoded,这两种格式[FromBody]无法解析。
第二步:确认代码配置没问题
看你贴的代码,大部分配置都是正确的,再快速核对一遍:
- 你的
Person类是public的,且所有属性都有public的get/set方法,这是模型绑定的必要条件,没问题。 - 控制器上标记了
[ApiController]特性,这个特性会自动启用很多便捷功能,包括自动验证请求体、绑定JSON数据,你已经加了,很好。 - 确认请求地址正确:控制器路由是
api/values,方法路由是Test,所以完整的请求URL应该是http://<你的API域名或IP>:<端口>/api/values/Test,别输错了。
第三步:测试验证
按照上面的配置调整Postman后,重新发送请求,应该就能正常返回你提交的Person对象了。如果还是有问题,可以试试用抓包工具查看实际发送的请求内容是否符合预期,或者查看API的日志,有没有更详细的错误提示。
内容的提问来源于stack exchange,提问作者Keith




