Scala Toolkit

如何發送請求?

語言

您可以在單一行中要求整個工具包

//> using toolkit latest

或者,您也可以只要求特定版本的 sttp

//> using dep com.softwaremill.sttp.client4::core:4.0.0-M1

在您的 build.sbt 檔案中,您可以新增對 Toolkit 的依賴關係

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 要求

使用 sttp 傳送要求最簡單的方式是 quickRequest

您可以使用 .get 定義 GET 要求,並使用 .send 傳送要求。

import sttp.client4.quick._
import sttp.client4.Response

val response: Response[String] = quickRequest
  .get(uri"https://httpbin.org/get")
  .send()

println(response.code)
// prints: 200

println(response.body)
// prints some JSON string
import sttp.client4.quick.*
import sttp.client4.Response

val response: Response[String] = quickRequest
  .get(uri"https://httpbin.org/get")
  .send()

println(response.code)
// prints: 200

println(response.body)
// prints some JSON string

Response[String] 包含狀態碼和字串主體。

要求定義

HTTP 方法和 URI

若要指定 quickRequest 的 HTTP 方法和 URI,您可以使用 getpostputdelete

若要建構 URI,您可以使用 uri 插補器,例如 uri"https://example.com"。若要深入了解這一點,請參閱 如何建構 URI 和查詢參數?

標頭

預設情況下,quickRequest 包含「Accept-Encoding」和「deflate」標頭。若要新增更多標頭,您可以呼叫其中一個 headerheaders 重載

import sttp.client4.quick._

val request = quickRequest
  .get(uri"https://example.com")
  .header("Origin", "https://scala-lang.org")

println(request.headers)
// prints: Vector(Accept-Encoding: gzip, deflate, Origin: https://scala-lang.org)
import sttp.client4.quick.*

val request = quickRequest
  .get(uri"https://example.com")
  .header("Origin", "https://scala-lang.org")

println(request.headers)
// prints: Vector(Accept-Encoding: gzip, deflate, Origin: https://scala-lang.org)

如果要求包含主體,sttp 也可以自動新增「Content-Type」和「Content-Length」。

驗證

如果您需要驗證才能存取資源,您可以使用 auth.basicauth.basicTokenauth.bearerauth.digest 方法之一。

import sttp.client4.quick._

// a request with a authentication
val request = quickRequest
  .get(uri"https://example.com")
  .auth.basic(user = "user", password = "***")
import sttp.client4.quick.*

// a request with a authentication
val request = quickRequest
  .get(uri"https://example.com")
  .auth.basic(user = "user", password = "***")

此頁面的貢獻者