scala/sttp

Request & URI

wefree 2023. 7. 18. 15:09

sttp 사용법 소개한다.

공식 메뉴얼 대신에 scala toolkit 에 나오는 간단한 예제를 옮겨봤다.

 

libraryDependencies += "com.softwaremill.sttp.client4" %% "core" % "4.0.0-M2"
object SttpMain {
  def main(args: Array[String]): Unit = {
    import sttp.client4.Response
    import sttp.client4.quick._

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

    println(response.code)
    println(response.body)

    ////////////////////////////////////////////////////////
    // URI interpolation
    ////////////////////////////////////////////////////////
    import sttp.model.Uri

    val book = "programming in scala"
    val bookUri: Uri = uri"https://example.com/books/$book"
    println(bookUri) // https://example.com/books/programming%20in%20scala

    ////////////////////////////////////////////////////////

    val queryParams = Map(
      "q" -> "scala",
      "limit" -> "10",
      "page" -> "1"
    )
    val uriWithQueryParams = uri"https://example.com/search?$queryParams"
    println(uriWithQueryParams)
    // prints: https://example.com/search?q=scala&limit=10&page=1

    ////////////////////////////////////////////////////////
    def getUri(limit: Option[Int]): Uri =
      uri"https://example.com/all?limit=$limit"

    println(getUri(Some(10)))
    // prints: https://example.com/all?limit=100

    println(getUri(None))
    // prints: https://example.com/all
  }
}