2

Spring で REST クライアントから POST 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」としてマップされているメソッドにマップされません。これにより、受信するHTTP404エラーが発生します。代わりに、「userId」が2の場合、URIは「/ 2/add」で終わる必要があります。

次に、複雑なUserタイプには、Userパラメーターに@RequestBodyアノテーションを付けるだけでは不十分です。JSONリクエスト本文をUserオブジェクトに変換する必要があります。これは、MappingJacksonHttpMessageConverterを使用して実行できます。このタイプのBeanを宣言することにより、Jacksonのアノテーションを使用して、JSONがUserプロパティに解析される方法を制御できます。

于 2013-03-13T03:35:10.977 に答える