事象
SpringBootを使って実装したサーバーにJSON形式のcurlコマンドを投げたところ「HTTP 415エラー(415 Unsupported Media Type)」になった。
解決策
コントローラメソッドのリクエストボディの型をMultiValueMapからMapに変更したところ解消した。
修正後
@PostMapping(value = "/a-resource", consumes = MediaType.APPLICATION_JSON)
public Object example(@RequestBody Map<String, String> request){/*処理*/}
原因
JSON形式のリクエストを受取った際、Spring内部でJacksonを用いてJSONをパースしているため、コントローラの型がMapであるべきのようだ。
コピペ元の引数がMultiValueMapだったのはapplication/x-www-form-urlencoded形式だったからであった。
なかなか正解にたどり着けなかったためシェア。