您可以在單一行中要求整個工具組
//> using toolkit latest
或者,您只要要求特定版本的 sttp
//> using dep com.softwaremill.sttp.client4::core:4.0.0-M1
在您的 build.sbt 檔案中,您可以新增對工具組的依賴項
lazy val example = project.in(file("example"))
.settings(
scalaVersion := "3.2.2",
libraryDependencies += "org.scala-lang" %% "toolkit" % "0.1.7"
)
或者,您只要要求特定版本的 sttp
libraryDependencies += "com.softwaremill.sttp.client4" %% "core" % "4.0.0-M1"
在您的 build.sc 檔案中,您可以新增對 Toolkit 的依賴關係
object example extends ScalaModule {
def scalaVersion = "3.2.2"
def ivyDeps =
Agg(
ivy"org.scala-lang::toolkit:0.1.7"
)
}
或者,您只要要求特定版本的 sttp
ivy"com.softwaremill.sttp.client4::core:4.0.0-M1"
HTTP 和 JSON
JSON 是 HTTP 要求和回應主體的常見格式。
在以下範例中,我們使用 GitHub REST API。您需要一個 GitHub 驗證權杖 來執行程式。請勿與任何人分享您的權杖。
傳送和接收 JSON
若要傳送 JSON 要求並剖析 JSON 回應,我們會結合使用 sttp 和 uJson。
傳送 JSON
若要傳送 JSON,您可以建構一個 uJson.Value
,並將其寫入為要求主體中的字串。
在以下範例中,我們使用 GitHub 使用者端點 來更新已驗證使用者的個人資料。我們在 JSON 物件中提供個人資料的新位置和個人簡介。
import sttp.client4.quick._
val json = ujson.Obj(
"location" -> "hometown",
"bio" -> "Scala programmer"
)
val response = quickRequest
.patch(uri"https://api.github.com/user")
.auth.bearer(sys.env("GITHUB_TOKEN"))
.header("Content-Type", "application/json")
.body(ujson.write(json))
.send()
println(response.code)
// prints: 200
println(response.body)
// prints the full updated profile in JSON
import sttp.client4.quick.*
val json = ujson.Obj(
"location" -> "hometown",
"bio" -> "Scala programmer"
)
val response = quickRequest
.patch(uri"https://api.github.com/user")
.auth.bearer(sys.env("GITHUB_TOKEN"))
.header("Content-Type", "application/json")
.body(ujson.write(json))
.send()
println(response.code)
// prints: 200
println(response.body)
// prints the full updated profile in JSON
在執行程式之前,請設定 GITHUB_TOKEN
環境變數。在執行程式之後,您應該會在 GitHub 個人資料上看到新的個人簡介和位置。
從回應中剖析 JSON
若要從要求的回應中剖析 JSON,您可以使用 ujson.read
。
我們再次使用 GitHub 使用者端點,這次是取得已驗證使用者。
import sttp.client4.quick._
val response = quickRequest
.get(uri"https://api.github.com/user")
.auth.bearer(sys.env("GITHUB_TOKEN"))
.send()
val json = ujson.read(response.body)
println(json("login").str)
// prints your login
import sttp.client4.quick.*
val response = quickRequest
.get(uri"https://api.github.com/user")
.auth.bearer(sys.env("GITHUB_TOKEN"))
.send()
val json = ujson.read(response.body)
println(json("login").str)
// prints your login
在執行程式之前,請設定 GITHUB_TOKEN
環境變數。執行程式應該會列印出您自己的登入資料。
使用 JSON 傳送和接收 Scala 物件
或者,您可以使用 uPickle 來使用 JSON 傳送或接收 Scala 物件。閱讀以下內容以瞭解 如何將物件序列化為 JSON 和 如何將 JSON 反序列化為物件。