SpringBoot(Spring MVC)では、クライアント側からControllerに値を渡すときに2つの方法があります。
それが@ModelAttributeと@RequestBodyです。
@ModelAttribute
クライアント側が値をx-www-form-urlencodedで送信するときに使用します。
@RequestBody
クライアント側が値をJSONで送信するときに使用します。
@RequestMapping("/api/awesome") @RestController public class AwesomeController { @Inject private MessageServiceSpec service; @RequestMapping("/save") @ResponseStatus(code = HttpStatus.OK) public void sendMessage(@RequestBody SomeDto obj) { service.sendMessage(obj); } }
x-www-form-urlencodedで送信しようとしているのに@RequestBodyで取ろうとしても取れないので注意しましょう。(クライアントサイドエンジニアとのコミュニケーション必須!)
あと、@RequestBody、@ModelAttributeの書き忘れに注意しましょう(;´Д`)
疲れてたりすると意外に忘れます。