Kotlinサーバーサイド実践開発という本のREST APIの実装部分を行っております。
以下を記載し、動作させ、curlコマンドでJSONを送り、JSONが返る想定ですがエラーが返ります。
Kotlin
1@RestController 2@RequestMapping("greeter") 3class GreeterController { 4 // JSONでリクエストを受け取る 5 @PostMapping("/hello") 6 fun helloByPost(@RequestBody request: HelloRequest): HelloResponse { 7 return HelloResponse("Hello ${request.name}") 8 } 9 10 // リクエストリングでリクエストを受け取る 11 @GetMapping("/hello") 12 fun hello(@RequestParam("name") name: String): HelloResponse { 13 return HelloResponse("Hello ${name}") 14 } 15}
Kotlin
1data class HelloRequest(val name: String)
Kotlin
1data class HelloResponse(val message: String)
コマンドプロンプトで実行したコマンド
curl -H 'Content-Type:application/json' -X POST -d '{"name":"Kotlin"}' http://localhost:8080/greeter/hello
返ってきたエラーメッセージ
{"timestamp":"2021-10-16T02:49:19.075+00:00","status":415,"error":"Unsupported Media Type","message":"","path":"/greeter/hello"}
intellijでのログ
12021-10-16 12:07:24.097 WARN 13840 --- [nio-8080-exec-3] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported] 2
hello()は想定通りの動作をしており、URLの間違いはなさそうです。
エラーで調べていくと、
Content-Type: application/jsonとapplicationの前にスペースが入る、'と"が違う、など多少の表記揺れがあり、試してみましたが結果は変わりませんでした。
コマンドプロンプトの設定はshift-JISでしたので、サポートしていないと出ているUTF-8でないので、ここが原因ではないかと思っています。
Windows10で、intellijで作成していますが、本の作者はMacで行っているそうです。
お手数おかけしますが、原因、解決方法お判りになりませんでしょうか?
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー