Ktor 参数与 DefaultRequest 2.X+

Ktor parameters with DefaultRequest 2.X+

我们从 KTOR 1.X 迁移到 2.X+ 并注意到我们不能再像这样添加默认参数:

defaultRequest {
        if (internal) {
            header(WebserviceConstants.KEY_TOKEN, getAccessToken())

            parameter(WebserviceConstants.KEY_LANG, localeHelper.getLanguage())
            parameter(WebserviceConstants.KEY_STORE, getStore(localeHelper))
        }
        host = hostAddress
        url {
            protocol = URLProtocol.HTTPS
        }
    }

我们仍然可以在每次调用时添加参数:

val response: HttpResponse = client.get("http://localhost:8080/products") {
    parameter(WebserviceConstants.KEY_LANG, localeHelper.getLanguage())
    parameter(WebserviceConstants.KEY_STORE, getStore(localeHelper))
}

但是如果我们每次调用都需要某些参数,那就很烦人了。我们尝试将它们添加为属性,并浏览了迁移指南以及我们能找到的任何文档。

还有其他方法吗?

您仍然可以通过访问 url 属性:

DefaultRequest 插件中添加参数
url.parameters.append(WebserviceConstants.KEY_LANG, localeHelper.getLanguage().toString())
url.parameters.append(WebserviceConstants.KEY_STORE, getStore(localeHelper).toString())