レスポンスボディとレスポンスエンテイティ
最初の記事
からです。
http://stackoverflow.com/questions/22725143/what-is-the-difference-between-responseentityt-and-responsebody
ResponseEntity を使用すると、任意の HTTP レスポンスヘッダを柔軟に定義することができます。4番目のコンストラクタはこちらをご覧ください。
http://docs.spring.io/spring/docs/3.0.x/api/org/springframework/http/ResponseEntity.html
ResponseEntity(T body, MultiValueMap<String,String> headers, HttpStatus statusCode)
HTTPレスポンスヘッダの一覧はこちらをご覧ください。
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Responses
よく使われるものに、Status、Content-Type、Cache-Controlがあります。
それが必要ない場合は、@ResponseBodyを使用すると、ほんの少し簡潔になります。
2つ目の記事
からです。
http://stackoverflow.com/questions/26549379/when-use-responseentityt-and-restcontroller-for-spring-restful-applications
ResponseEntity
は、HTTPレスポンス全体を表すものです。ステータスコード、ヘッダ、ボディなど、その中に入るものはすべて制御することができます。
@ResponseBody
は HTTP レスポンスボディを表すマーカーであり
@ResponseStatus
は、HTTP レスポンスのステータスコードを宣言しています。
@ResponseStatus
これはメソッド全体をマークしているので、ハンドラメソッドが常に同じように動作することを確認する必要があります。そのためには
HttpServletResponse
または
HttpHeaders
パラメータを使用します。
基本的には
ResponseEntity
を使えば、もっといろいろなことができるようになります。
第3回記事
からです。
http://www.concretepage.com/spring-4/spring-4-mvc-jsonp-example-with-rest-responsebody-responseentity
このページでは、REST、@ResponseBody、ResponseEntityを使ったSpring 4 MVCとJSONPのサンプルを提供します。JSONPとは、JSONにパディングを施したものです。これは、Webブラウザで実行されるJavaScriptコードをサポートしており、通常は同一生成元ポリシーのために禁止されている、異なるドメインのサーバーからのデータを要求することができます。このポリシーによれば、Webブラウザは、あるWebブラウザのスクリプトコードが、同じドメイン内の別のWebブラウザからデータにアクセスすることを許可することができます。しかし、このポリシーは
<script>
ここからは、JSONPの役割が見えてくる。JSONPは、異なるドメインのデータにアクセスするために
<script>
タグをWebブラウザで表示します。もし、URLが
http://localhost:8080/concretepage-1/book1?callback=myfunction
という JSONP レスポンスを投げる場合。
myfunction({"bookName":"Godan","writer":"Premchand"});
src=" http://localhost:8080/concretepage-1/book1?callback=myfunction " type="application/javascript">
Spring 4のAbstractJsonpResponseBodyAdviceによるJSONPのサポート
JSONPレスポンスに対応するクラスを探します。JsonpAdvice.java
@ControllerAdvice
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {
public JsonpAdvice() {
super("callback");
}
}
Spring RESTによるJSONP
JSONを生成するために、この例で使用されているBeanを探します。ブック.java
public class Book {
private String bookName;
private String writer;
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
}
BookService.java
@RestController
class BookService {
@RequestMapping(value= "/book1", produces = MediaType.APPLICATION_JSON_VALUE)
Book bookInfo1() {
Book book = new Book();
book.setBookName("Godan");
book.setWriter("Premchand");
return book;
}
}
functionCall({"bookName":"Godan","writer":"Premchand"});
JSONP with @ResponseBody and ResponseEntity
Now find a controller in which we have created methods that will return @ResponseBody and ResponseEntity.@Controller
class BookController {
@RequestMapping(value ="/book2", produces =MediaType.APPLICATION_JSON_VALUE )
@ResponseBody
Book bookInfo2() {
Book book = new Book();
book.setBookName("Ramcharitmanas");
book.setWriter("TulasiDas");
return book;
}
@RequestMapping(value ="/book3", produces =MediaType.APPLICATION_JSON_VALUE )
public ResponseEntity<Book> bookInfo3() {
Book book = new Book();
book.setBookName("Ramayan");
book.setWriter("Valmiki");
return ResponseEntity.accepted().body(book);
}
}
functionCall({"bookName":"Ramcharitmanas","writer":"TulasiDas"});
functionCall({"bookName":"Ramayan","writer":"Valmiki"});
JSONP Client Code
Now we will write client code which can be used in any other domain.jsonptest.html
function functionCall(data) { console.log(data.bookName); console.log(data.writer); console.log('-----------'); } src="http://localhost:8080/concretepage-1/book1?callback=functionCall" type="application/javascript"> src="http://localhost:8080/concretepage-1/book2?callback=functionCall" type="application/javascript"> src="http://localhost:8080/concretepage-1/book3?callback=functionCall" type="application/javascript">
src="http://localhost:8080/concretepage-1/book1?callback=functionCall" type="application/javascript">
src="http://localhost:8080/concretepage-1/book2?callback=functionCall" type="application/javascript">
src="http://localhost:8080/concretepage-1/book3?callback=functionCall" type="application/javascript">
Now we are done. Happy Learning!
Download Source Code
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例