我想创建一个仅在客户端发送特定Accept标头时才匹配的路由.我用Spray 1.2-20130822.
我想让路线工作:
def receive = runRoute {
get {
path("") {
accept("application/json") {
complete(...)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我发现了一个使用accept()函数的规范,但是我无法弄清楚要在我的Spray-Handler中导入什么来使它作为指令工作.另外,我没有找到关于头指令的其他doc但是这些存根.
我会这样做:
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])
Run Code Online (Sandbox Code Playgroud)
然后包装你的根:
path("") {
get {
acceptOnly(`application/json`) {
session { creds ?
complete(html.page(creds))
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
顺便提一下,1.2-20130928如果可以的话,每晚使用最新喷雾1.2 ,请更新它
| 归档时间: |
|
| 查看次数: |
2431 次 |
| 最近记录: |