为啥我在 AngularJs 帖子中收到 400 个错误请求?
Posted
技术标签:
【中文标题】为啥我在 AngularJs 帖子中收到 400 个错误请求?【英文标题】:Why am I getting 400 bad request with AngularJs post?为什么我在 AngularJs 帖子中收到 400 个错误请求? 【发布时间】:2014-12-06 02:43:51 【问题描述】:我使用 Spring MVC 和 AngularJs 来创建一个 Web 应用程序。我向服务器发送了一个请求,但我收到了400 error bad request
。我在 Spring servlet 配置文件中配置了 json 格式的消息转换器。我想知道为什么会出现此错误。
这是我的角度服务:
save : function(user)
return $http(
method: 'POST',
url: '/app-web/user/create',
contentType: "application/json",
data:user
);
在服务器端,我有一个 Spring MVC 控制器,如下所述:
@RequestMapping(value="/user/create", method= RequestMethod.POST)
@ResponseBody
public String createAccount(@RequestBody User user)
//some logic
return "Ok";
我注意到了其他事情:当我删除控制器中的 @RequestBody
时,我没有出现 400 错误,但用户是 null
:
@RequestMapping(value="/user/create", method= RequestMethod.POST)
@ResponseBody
public String createAccount(User user)
//some logic
return "Ok";
【问题讨论】:
您传入的“用户”对象是有值还是为空? 我无法访问 Spring MVC 控制器。在 Angularjs 控制器中,用户具有价值 如果您使用 Chrome 或 IE 并打开开发者工具 (F12) 并在“save : function(user) ”行放置断点。运行它,当代码到达断点时,将鼠标悬停在“用户”上。将出现一个工具提示,其中包含您悬停的项目的值。它是说 null 还是有值?要尝试的另一件事是查看它尝试访问的确切 URL(同样,使用开发人员工具)。它尝试访问的确切 URL 可能与您预期的不同。 Losbear 我使用 firebug 在 angularjs 端查看用户的价值。用户有价值。但是当请求被发送到服务器时,我有 400 个错误请求。当我删除 @RequestBody 我到达 Spring Controller 但用户对象不包含值 啊,好的。所以“用户”对象与客户端传入的用户对象不匹配。也许客户端的属性之一为空,但服务器端的用户对象不可为空。还要检查名称的大小写。 MVC 尝试为您自动映射它,但如果对象太复杂,它很容易损坏。作为最后的手段(踢球),注释掉“public String createAccount(@RequestBody User user)”并替换为“public String createAccount(@RequestBody string user)”并传递一个带有角度的字符串,看看它是否收到. 【参考方案1】:问题出在用户表单上。我有姓氏、名字、电子邮件、密码、密码 1,但用户 Java 对象不包含密码 1 属性。当请求提供的json数据与Java Object不对应时,JsonConverter无法匹配到Java Object的数据。
【讨论】:
很高兴你知道了! @Pracede 我也有同样的问题,萤火虫上显示的输入是 "id":null,"name":"qweqweqwe","users":"id":3,"username ":"Kaminee","password":"1234","email":"kim@mail .com","address":"bhumkar ","country":"countryId":1,"countryName":"印度"以上是关于为啥我在 AngularJs 帖子中收到 400 个错误请求?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在尝试使用 fetch 连接 Api 时收到“错误请求”错误 400?
我不知道为啥我在发送不和谐的 webhook 时收到 400 bad request 错误。一切似乎都很好,但我对此很陌生
为啥我使用 Azure Graph SDK 收到 400 Bad Request?
为啥我在第二次运行测试时在 Mongoose 中收到错误“一旦编译后无法覆盖模型”?