2

我试图找到如何在 Spring 中编写以从 REST 客户端发布 JSON。例如,我写道:

@RequestMapping(value = "/{userId}/add", method = RequestMethod.POST, headers = {"content-type=application/json"})
@ResponseBody
public Map<String, String> saveUser(@RequestBody User user, BindingResult result) { 
    Map<String, String> jsonResponse = new HashMap<String, String>();
    if (result.hasErrors()) {
        jsonResponse.put("Message", "Can't add the user");
        jsonResponse.put("Code", "401");
        return jsonResponse;
    }
    userService.addUser(user);
    jsonResponse.put("Message", "Success add User");
    jsonResponse.put("Code", "200");
    return jsonResponse;
}

最终从 Firefox REST 客户端对其进行了测试。但我看到了 404 错误。我究竟做错了什么?感谢您的帮助。

4

1 回答 1

0

首先,如果您的请求的 URI 以“/user/2/add”结尾,它不会映射到您的方法,该方法被映射为“/{userId}/add”。这将导致您收到 HTTP 404 错误。相反,如果“userId”为 2,则您的 URI 应以“/2/add”结尾。

其次,使用 @RequestBody 注释 User 参数对于复杂的 User 类型是不够的。您需要将 JSON 请求正文转换为 User 对象。您可以使用MappingJacksonHttpMessageConverter完成此操作。通过声明这种类型的 bean,您可以使用 Jackson 的注解来控制 JSON 如何解析为 User 属性。

于 2013-03-13T03:35:10.977 回答