在Finagle中,如何以安全,干净的方式创建带有参数的HTTP GET请求请求?
val request = RequestBuilder()
.url("http://www.example.com/test")
.addParameter("key", "value") // this doesn't exist
.buildGet()
request // should be a GET request for http://www.example.com/test?key=value
Run Code Online (Sandbox Code Playgroud)
您可以使用容易混淆的命名Request.queryString:
val request = RequestBuilder()
.url(Request.queryString("http://www.example.com/test", Map("key" -> "value"))
.buildGet()
Run Code Online (Sandbox Code Playgroud)
传递给的参数RequestBuilder.url()预计是完整格式的,因此 Finagle 不提供任何方法来添加更多查询参数。
解决这个问题的一种方法是在链的上下文之外构造一个 URL 对象RequestBuilder。您可以在 a 中定义查询参数Map,将其转换为查询字符串,然后将其连接到基本 URL:
val paramStr = Map("key" -> "value", ...) map { case (k, v) =>
k + '=' + v
} mkString("?", "&", "")
val request = RequestBuilder.safeBuildGet(
RequestBuilder.create()
.url("http://www.example.com/test" + paramsStr)
)
Run Code Online (Sandbox Code Playgroud)
请注意,您需要对在Map.
| 归档时间: |
|
| 查看次数: |
3005 次 |
| 最近记录: |