Creare un client GraphQL in Scala
In questo articolo vediamo come creare un semplice client GraphQL in Scala 3.
Come "server" useremo QraphQLPlaceholder.
Dobbiamo installare un paio di librerie.
Se usate sbt:
libraryDependencies ++= Seq(
"com.softwaremill.sttp.client3" %% "core" % "3.11.0",
"com.softwaremill.sttp.client3" %% "upickle" % "3.11.0"
)
Qui sotto un pò di codice:
package org.example
import sttp.client3.*
import sttp.client3.upicklejson.asJson
import upickle.default.*
case class User(id: String, name: String, email: String) derives ReadWriter
case class UsersData(users: List[User]) derives ReadWriter
case class GraphQLResponse(data: UsersData) derives ReadWriter
@main
def main(): Unit = {
val apiUrl = "https://graphqlplaceholder.vercel.app/graphql"
val query =
"""
query ListaUtenti {
users {
id
name
email
}
}
"""
val backend = HttpClientSyncBackend()
val request = basicRequest
.post(uri"$apiUrl")
.body(Map("query" -> query))
.response(asJson[GraphQLResponse])
println("Richiesta in corso con sbt e Scala 3...")
val response = request.send(backend)
response.body match
case Left(error) =>
println(s"Errore: $error")
case Right(res) =>
println(s"Trovati ${res.data.users.size} utenti:")
println("-" * 50)
res.data.users.foreach { u =>
println(s"[${u.id}] ${u.name} - ${u.email}")
}
println("-" * 50)
}
Enjoy!
scala sbt graphql qraphqlplaceholder
Commentami!