[解決済み] Springの@ResponseBodyアノテーションはどのように機能するのですか?
質問
以下のようなアノテーションが付いたメソッドがあります。
/**
* Provide a list of all accounts.
*/
// TODO 02: Complete this method. Add annotations to respond
// to GET /accounts and return a List<Account> to be converted.
// Save your work and restart the server. You should get JSON results when accessing
// http://localhost:8080/rest-ws/app/accounts
@RequestMapping(value="/orders", method=RequestMethod.GET)
public @ResponseBody List<Account> accountSummary() {
return accountManager.getAllAccounts();
}
だから、このアノテーションでわかるんです。
@RequestMapping(value="/orders", method=RequestMethod.GET)
このメソッドは GET URLで表されるリソースに対して行われるHTTPリクエスト /オーダー .
このメソッドは、DAOオブジェクトを呼び出して リスト .
どこ アカウント はシステム上のユーザーを表し、このユーザーを表すいくつかのフィールドを持っている、といったところでしょうか。
public class Account {
@Id
@Column(name = "ID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long entityId;
@Column(name = "NUMBER")
private String number;
@Column(name = "NAME")
private String name;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name = "ACCOUNT_ID")
private Set<Beneficiary> beneficiaries = new HashSet<Beneficiary>();
...............................
...............................
...............................
}
質問です。
は、具体的にどのように
@ResponseBody
アノテーションはどのように機能するのですか?
の前に配置されます。
List<Account>
オブジェクトを指すので、このListを指していると思われます。コースのドキュメントでは、このアノテーションは次のような機能を果たすとされています。
によってHTTPレスポンスに書き込まれることを保証します。 メッセージコンバーター(MVCビューの代わり)。
また、Springの公式ドキュメントを読むと http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/ResponseBody.html
を取るようです。
List<Account>
オブジェクトを作成し、それを
Http Response
. これは正しいのでしょうか、それとも私が誤解しているのでしょうか?
のコメントに書かれている。
accountSummary()
というメソッドがあります。
にアクセスすると、JSONの結果が得られるはずです。 http://localhost:8080/rest-ws/app/accounts
では、具体的にどういうことなのでしょうか。ということでしょうか?
List<Account>
オブジェクトが返す
accountSummary()
メソッドは、自動的に
JSON
の書式を設定し、それを
Http Response
? それとも何?
この主張が正しい場合、オブジェクトを自動的に
JSON
の書式は?のときに標準的な形式が採用されますか?
@ResponseBody
アノテーションが使用されているのか、それとも別の場所で指定されているのか?
どのように解決するのですか?
まず、アノテーションがアノテーションしていない
List
. メソッドにアノテーションを付けます。
RequestMapping
があります。あなたのコードは次のものと同等です。
@RequestMapping(value="/orders", method=RequestMethod.GET)
@ResponseBody
public List<Account> accountSummary() {
return accountManager.getAllAccounts();
}
さて、このアノテーションが意味するところは、このメソッドの戻り値がHTTPレスポンスのボディを構成するということです。もちろん、HTTPレスポンスにJavaオブジェクトを含めることはできません。そこで、このアカウントのリストは、RESTアプリケーションに適した形式、通常はJSONまたはXMLに変換されます。
フォーマットの選択は、インストールされているメッセージコンバーター、および
produces
属性
の
@RequestMapping
アノテーション、およびクライアントが受け入れるコンテンツタイプ (これは HTTP リクエストヘッダで確認できます) に基づいています。例えば、リクエストにXMLは受け付けるがJSONは受け付けないと書かれていて、リストをXMLに変換できるメッセージコンバータがインストールされている場合、XMLが返されます。
関連
-
[解決済み] JsonMappingException: No suitable constructor found for type [simple type, class ]: can't instantiate from JSON object.
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] バイナリデータをJSON文字列で。Base64より優れたもの
-
[解決済み] Transactionalアノテーションはどこに属しますか?
-
[解決済み] Springのオートワイヤリングの仕組みは?
-
[解決済み] DjangoとPythonを使ったJSONレスポンスの作成
-
[解決済み] Spring MVCの@ResponseBodyメソッドがStringを返すときにHTTP 400エラーで応答するにはどうすればよいですか?
-
[解決済み] Spring MVC - Restコントローラで単純な文字列をJSONとして返す方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java Error スレッド "AWT-EventQueue-0" で例外発生 java.lang.
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
Eclipseプロンプトを実行する java仮想マシンを使用しない
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 4 at text.Division.main(Divisi
-
linux run jarfile Invalid or corrupt jarfile error.
-
Javaエラーメッセージがenclosingクラスでない
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。
-
[解決済み] springの@Controllerアノテーションと@RestControllerアノテーションの違いについて