我想创建一个仅在客户端发送特定 Accept
时才匹配的路由标题。我用喷雾 1.2-20130822 .
我想让路线工作:
def receive = runRoute {
get {
path("") {
accept("application/json") {
complete(...)
}
}
}
}
Here我找到了一个使用
accept()
的规范函数,但我无法弄清楚在我的 Spray-Handler 中导入什么以使其作为指令工作。另外,我没有找到关于 header 指令的其他文档,但这些 stubs .
最佳答案
我会这样做:
def acceptOnly(mr: MediaRange*): Directive0 =
extract(_.request.headers).flatMap[HNil] {
case headers if headers.contains(Accept(mr)) ⇒ pass
case _ ⇒ reject(MalformedHeaderRejection("Accept", s"Only the following media types are supported: ${mr.mkString(", ")}"))
} & cancelAllRejections(ofType[MalformedHeaderRejection])
然后只需包裹您的根:
path("") {
get {
acceptOnly(`application/json`) {
session { creds ⇒
complete(html.page(creds))
}
}
}
}
顺便说一下,最新的每晚喷雾 1.2 是
1.2-20130928
如果可以,更新它
关于scala - 如何匹配路由中的特定接受 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19131488/