You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

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

火山引擎 最新活动