事象
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
形式だったからであった。
なかなか正解にたどり着けなかったためシェア。