Spring BootのControllerでデータを受け取る方法をご紹介します。便利なアノテーション@RequestBody、@ModelAttributeを活用します。
引数に@RequestBodyをつけてClassを指定すると、jsonデータを受け取ることができます。このように書きます。ControllerがRestControllerで他のプロジェクトからRESTでClassデータを受け取ることも出来ます。
@PostMapping(path = "/sample") public String example3(@RequestBody SampleBean samplebean) { return "sample"; }
上記のメソッドにはこのようにアクセスします。
$ curl -X POST -H "Content-Type: application/json" -d '{"name":"taro", "age":"10"}' http://localhost:8080/sample
また、引数にを@ModelAttributeつけると、HTMLのformからデータを受け取ることができます。このように書きます。
@PostMapping(path = "/sample") public String example3(@ModelAttribute SampleBean samplebean) { return "sample"; }
@RequestBodyはクライアント側からClass(JSON)を受け取るのに対し@ModelAttributeはクライアント側から受けたデータを指定した型にバインドします。
データがx-www-form-urlencoded形式でしか送れない場合などは、@RequestBodyでなく@ModelAttributeで受信します。
x-www-form-urlencoded形式は、HTMLフォームからの送信の際、クライアントがWebサーバーに送信するContent-Type名の一つです。