:メソッドのパラメータを示す
注釈は、Webリクエストのボディ にバインドする必要があります。要求の本文は、 HttpMessageConverterに渡され、要求のコンテンツタイプの に応じて、メソッド引数を解決します。オプションで、@ Validを使用して引数に注釈を付けることで、自動検証を に適用できます。
例では、@RequestBody
を使用しても意味がありません。あなたは著者名はあなたが/books/myBook/author
コントローラが応答が{"author":"whoever"}
だろう
@RestController
public class BooksRestController{
@RequestMapping(value="/books/{bookName}/author", method=RequestMethod.GET)
public Map<String,String> getAuthor(@PathVariable bookName){
...
Map<String,String> author = new HashMap<String,String>();
author.put("author",bookAuthor);
return author;
}
}
だろうがGET送るブック
に対応する取得したいです。
ここで、本を作成したいと考えています。これは、@RequestBody
を使用して、HTTP POST本体で送信されたJSONをBook
オブジェクトに自動的に解析するときです。
要求: POST /books
- ボディ{"name" : "SomeBook", "author":"SomeAuthor"}
コントローラー:
@RestController
public class BooksRestController{
@RequestMapping(value="/books", method=RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public Book createBook(@RequestBody Book book){
...
//save book
book = bookService.save(book);
return book;
//Book is going to be serialized as JSON because of the implicit
//@ResponseBody annotation from @RestController
}
Book.class:
public class Book{
private String name;
private String author;
//getters setters;
}
はそれがあった、あなたの説明をありがとうございましたはっきりと簡潔です。 あなたはそれを言った: "あなたは本を作成したいと思っています。それは@RequestBodyを使って、HTTP POST本体で送られたJSONをブックオブジェクトに自動的に解析するときです。 JSONオブジェクトに変換して戻してブラウザに表示するか、ユーザーに返しますか? – johnwick0831
いいえ、これを実現するには、メソッドのreturnパラメータに '@ ResponseBody'を指定する必要があります。しかし、この例でわかるように、コントローラは '@ RestController'でアノテートされています。これは暗黙のうちにアノテーション(javadoc:'このアノテーションを持つ型は@RequestMappingメソッドがデフォルトで@ResponseBodyセマンティクスを取るコントローラとして扱われます)。代わりに '@ Controller'を使用していましたが、あなた自身でアノテーションを追加する必要があります。 – codependent