@RequestBody
Spring 3 のおよびアノテーションについて説明してくれる人はいますか@ResponseBody
? これらは何のためにあるのですか? 例があれば教えてください。
ベストアンサー1
ドキュメントには「16.3.3.4 @RequestBody アノテーションによるリクエストボディのマッピングそして、ある人が16.3.3.5 @ResponseBody アノテーションによるレスポンス本文のマッピングこれらのセクションを参照することをお勧めします。関連事項:@RequestBody
javadoc、@ResponseBody
javadocs
使用例は次のようになります。
JQuery のような JavaScript ライブラリを使用すると、次のような JSON オブジェクトを投稿できます。
{ "firstName" : "Elmer", "lastName" : "Fudd" }
コントローラーメソッドは次のようになります。
// controller
@ResponseBody @RequestMapping("/description")
public Description getDescription(@RequestBody UserStats stats){
return new Description(stats.getFirstName() + " " + stats.getLastname() + " hates wacky wabbits");
}
// domain / value objects
public class UserStats{
private String firstName;
private String lastName;
// + getters, setters
}
public class Description{
private String description;
// + getters, setters, constructor
}
もしあなたがジャクソンクラスパスに(そして<mvc:annotation-driven>
セットアップ後、Spring は受信した JSON を投稿本文の UserStats オブジェクトに変換し (@RequestBody
注釈を追加したため)、返されたオブジェクトを JSON にシリアル化します (@ResponseBody
注釈を追加したため)。そのため、ブラウザー/クライアントには次の JSON 結果が表示されます。
{ "description" : "Elmer Fudd hates wacky wabbits" }
完全な動作例については、私の以前の回答を参照してください。https://stackoverflow.com/a/5908632/342852
注: RequestBody / ResponseBody は、もちろん JSON に限定されず、プレーン テキストや XML を含む複数の形式を処理できますが、おそらく JSON が最もよく使用される形式です。
アップデート
Spring 4.x 以降では、通常は@ResponseBody
メソッド レベルではなく@RestController
クラス レベルで使用することで同じ効果が得られます。
以下は公式からの引用ですSpring MVC ドキュメント:
@RestController
は作成された注釈それはそれ自体メタ注釈付き@Controller
およびを使用して@ResponseBody
、すべてのメソッドが型レベルの@ResponseBody
アノテーションを継承し、ビュー解決と HTML テンプレートによるレンダリングではなく、レスポンス本文に直接書き込むコントローラーを示します。