如何将 RequestReader 绑定到 Finch 中的路由
how to bind RequestReader to Route in Finch
我想知道如何在Finch中将RequestReader和Route绑定在一起。我没有找到关于它的完整示例。
这个例子来自 finch github,它运行正常。
import io.finch.route._
import com.twitter.finagle.Httpx
val api: Router[String] = get("hello") { "Hello, World!" }
Httpx.serve(":3000", api.toService)
我了解此代码将获取路径 "hello" 并将 return 响应 "hello world"
然后我想将 RequestHeader 绑定到它。
val doSomethingWithRequest: RequestReader[String] =
for {
foo <- param("foo")
bar <- param("bar")
} yield "u got me"
val api: Router[RequestReader[String]] = Get / "hello" /> doSomethingWithRequest
val server = Httpx.serve(":3000", api.toService)
我认为这段代码意味着如果 url 给出“http://localhost:3000/hello?foo=3”,它将 return 响应 "u got me"。但是,响应状态是404。
我觉得我在Route和RequestHeader的组合上做错了。
也许有人可以在这方面帮助我,另外,最好分享一些关于这个 Finch 的好文档。版本升级如此频繁,文档已过时https://finagle.github.io/blog/2014/12/10/rest-apis-with-finch/
感谢您提出这个问题!我相信这是 Whosebug 上的第一个 Finch 问题。
从 0.8 开始(has been released today) it's quite possible to compose Router
s and RequestReader
s together using the ?
combinator (see section "Composing Routers" 了解更多详情)。
下面是说明此功能的示例。
// GET /hello/:name?title=Mr.
val api: Router[String] =
get("hello" / string ? param("title")) { (name: String, title: String) =>
s"Hello, $title$name!"
}
Httpx.serve(":8081", api.toService)
您提到的博客 post 已经过时了,所有博客 post 几乎都是这种情况。虽然,Github 存储库中有一个 comprehensive documentation,我们正努力保持真实。
我想知道如何在Finch中将RequestReader和Route绑定在一起。我没有找到关于它的完整示例。
这个例子来自 finch github,它运行正常。
import io.finch.route._
import com.twitter.finagle.Httpx
val api: Router[String] = get("hello") { "Hello, World!" }
Httpx.serve(":3000", api.toService)
我了解此代码将获取路径 "hello" 并将 return 响应 "hello world"
然后我想将 RequestHeader 绑定到它。
val doSomethingWithRequest: RequestReader[String] =
for {
foo <- param("foo")
bar <- param("bar")
} yield "u got me"
val api: Router[RequestReader[String]] = Get / "hello" /> doSomethingWithRequest
val server = Httpx.serve(":3000", api.toService)
我认为这段代码意味着如果 url 给出“http://localhost:3000/hello?foo=3”,它将 return 响应 "u got me"。但是,响应状态是404。
我觉得我在Route和RequestHeader的组合上做错了。
也许有人可以在这方面帮助我,另外,最好分享一些关于这个 Finch 的好文档。版本升级如此频繁,文档已过时https://finagle.github.io/blog/2014/12/10/rest-apis-with-finch/
感谢您提出这个问题!我相信这是 Whosebug 上的第一个 Finch 问题。
从 0.8 开始(has been released today) it's quite possible to compose Router
s and RequestReader
s together using the ?
combinator (see section "Composing Routers" 了解更多详情)。
下面是说明此功能的示例。
// GET /hello/:name?title=Mr.
val api: Router[String] =
get("hello" / string ? param("title")) { (name: String, title: String) =>
s"Hello, $title$name!"
}
Httpx.serve(":8081", api.toService)
您提到的博客 post 已经过时了,所有博客 post 几乎都是这种情况。虽然,Github 存储库中有一个 comprehensive documentation,我们正努力保持真实。