为啥我在 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 中收到错误“一旦编译后无法覆盖模型”?

为啥我在第二次运行测试时在 Mongoose 中收到错误“一旦编译后无法覆盖模型”?

angularjs拦截器:为啥在$http拦截器中没有收到正确的状态码和消息