概要
ここでは、ParameterizedTypeReferenceを使います。
また、getForObjectではなくRestTemplate.exchange()を使用します。
(Listのラッパークラスを作成すればgetForObject()でも取得できるようですが、
ラッパークラス作成が手間なので、今回はやりません)
以下のコードはBearerトークンを使う外部API呼び出しで試したので、
Bearerに関係するコードがありますが、認証が無いAPIをコールするなら必要ありません。
実装
Player.kt
data class Player (
val name : String,
val podition: String
)
APICaller.kt
fun getPlayers(url: String, token: String) {
val header = HttpHeaders()
headers.setBearerAuth(token)
val entity = HttpEntity<HttpHeaders>(header)
val players = RestTemplate().exchange(
url,
HttpMethod.GET,
entity,
object: ParameterizedTypeReference<List<Player>>(){}).body
players.foreach {
println("名前:" + it.name + " 守備位置:" + it.podition)
}
}
名前:松坂大輔 守備位置:投手
名前:イチロー 守備位置:外野手
名前:城島健司 守備位置:捕手
参考