Spring MVC と Spring Webflux
https://zenn.dev/tm35/articles/05e74b6dd9f831#%40requestbody
Spring MVC では
Postmapping と 関数の引数の RequestBody で中身を引き取れるらしい
https://www.baeldung.com/spring-mvc-async-vs-webflux
Spring Webflux では別の書き方になる。
こちらではリアクティブに書けるため、非同期で完全に作れるのがメリットらしい。
今回は Spring MVC での実装になる。
実装
外側から受け取るので、 REST の Resource.kt に書く。
@RestController
class PersonHandler(
// .....
@PostMapping("/persons")
fun postPerson(@RequestBody request: PersonJson): String {
return request.toString()
}
GET とおなじ URL で Postmapping を作る
リクエストをちゃんと受け取れいているか確認する。
そのため、Usecase は一旦呼ばずに、リクエストを String にして返す。
data class PersonJson (
val name: String,
val age: Int,
)
PersonJson は以前の回で GET を作る時に、
ドメインから JSON 変換用にするためにこれを作成した。
POST でも JSON の受け取りのために同じものを利用する。
curl -XPOST で叩く
https://weblabo.oscasierra.net/curl-post/
実行は curl で叩く
curl -X POST -H "Content-Type: application/json" \
-d '{"name":"test", "age":20}' \
http://localhost:8080/persons
-H でヘッダーにデータの形式は json だよと教えて
-d で json データを添える
最後に叩く URL の叩き先を書く。
{name=test, age=20}
すると、送ったものが key = value の形で返ってくる。
が入って送信されているのがわかる。
println(request.name)
test
リクエストのひとつひとつは reqeust.keyName でアクセスできる。
まとめ
Kotlin Springboot Spring MVC で
POST リクエストで JSON データを受け取るには
@PostMapping("/your/url)"
で /your/url に POST された時に動くハンドラ関数を書き
functionName(@RequestBody request: YourJsonType)
ハンドラ関数では、こうやって引数で予め決めておいた Key Value の JSON のリクエストを受け取り
関数の処理内部で request.key で取り出して使うことができる。
Top comments (0)