我使用finagle
作为rest
客户端。在ClientBuilder
中我指定了一系列主机,但请求需要设置一个包含主机的网址。
如何避免在请求中指定主机并让finagle选择一个?
感谢。
val client = ClientBuilder().hosts("host1:81,host2:82").codec(Http()).build()
val request = RequestBuilder()
// .url("http://host1/get") // dont want to specify host
// .url("/get") // MalformedURLException: no protocol
.buildGet()
var resp = client(request) // sent to host specified by url
答案 0 :(得分:2)
看起来你正在使用finagle-http
模块。使用RequestBuilder
无法在URL中构建没有主机的请求。不过,您可以手动构建Request
(或创建自己的RequestBuilder以供进一步使用)
我建议切换到finagle-httpx
模块(https://github.com/twitter/finagle/tree/develop/finagle-httpx)。它与finagle-http
不兼容,但它有很多API改进,并且能够在URL中创建没有主机的请求,例如:
val client = Httpx.client.withTls("my.api")
.newService("host1.my.api:443,host2.my.api:443")
val req = Request("/get")
val rep = client(req)