Ktor 中 URL builder 的例子

Example of URL builder in Ktor

我正在使用 Ktor 客户端调用 API,但我没有找到任何关于如何使用查询参数构造 URL 的示例。

我想要这样的东西:

protocol = HTTPS,
host = api.server.com,
path = get/items,
queryParams = List(
  Pair("since", "2020-07-17"),
  
)

我找不到任何关于如何为此使用 URL 生成器的示例。

如果您想单独指定每个元素(协议、主机、路径和参数),您可以使用 HttpClient.request 方法来构建您的 url。在此方法中,您可以访问 HttpRequestBuilder and then you can configure url with usage of UrlBuilder

client.request<Response> {
            url {
                protocol = URLProtocol.HTTPS
                host = "api.server.com"
                path("get", "items")
                parameters.append("since", "2020-07-17")
            }
        }

Response类型是您的回复,您可以在那里指定您需要的任何内容

如果有人想在他们的所有请求中添加一个基础 URL 也会很有帮助:

 HttpClient(Android) {

        expectSuccess = false

        //config Client Serialization
        install(JsonFeature) {
            serializer = KotlinxSerializer(json)
        }

        //config client logging
        install(Logging) {
            level = LogLevel.BODY
        }

        //Config timeout
        install(HttpTimeout) {
            requestTimeoutMillis = 30 * 1000L
            connectTimeoutMillis = 10 * 1000L
        }

        //Config Base Url
        defaultRequest {
            url {
                protocol =URLProtocol.HTTPS
                host = baseUrl
            }
        }
    }

  val json = kotlinx.serialization.json.Json {
    ignoreUnknownKeys = true
    isLenient = true
    encodeDefaults = false
}