Arc*_*nes 0 android kotlin ktor kotlin-multiplatform ktor-client
我正在尝试Ktor通过转换一些当前正在使用的现有项目Retrofit。
虽然我可以轻松地将请求转换为类似的内容:
client.get {
url("$BASE_URL/something/somepage/another")
}
Run Code Online (Sandbox Code Playgroud)
$BASE_URL每次都添加到所有路径似乎很乏味。在改造中,我们可以简单地执行以下操作:
Retrofit.Builder()
.baseUrl(BASE_URL)
.create(SomeServiceClass::class.java)
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用defaultRequest和设置BASE_URL那里,但显然你只能设置url.host而不是整个basePath.
有没有办法在 中做同样的事情Ktor?或者如果没有,处理这个问题的最佳做法是什么?
你可以!
为此,您需要在实例化客户端时设置默认请求。
val httpClient = HttpClient(Android) {
defaultRequest {
host = "my.zoo.com"
url {
protocol = URLProtocol.HTTPS
}
}
}
val response = httpClient.get<List<CatsResponse>>(
path = "animals/cats"
)
Run Code Online (Sandbox Code Playgroud)
这将调用 https://my.zoo.com/animals/cats
希望能帮助到你 :)
来自官方文档
DefaultRequest 允许您配置与请求 URL 合并的 URL 的基本部分。
defaultRequest {
url("https://ktor.io/docs/")
}
Run Code Online (Sandbox Code Playgroud)
如果您使用具有上述配置的客户端发出以下请求,...
val response: HttpResponse = client.get("welcome.html")
Run Code Online (Sandbox Code Playgroud)
...生成的 URL 将如下所示: https: //ktor.io/docs/welcome.html
| 归档时间: |
|
| 查看次数: |
888 次 |
| 最近记录: |