在spray中,我想使用不同的内容类型来响应,具体取决于给定的Accept
header 。我在question by rompetroll中看到了一些建议,但是我想听听是否有任何规范的方法(即简单或已经实现)。
本质上,我想应该发生的事情是这样的:
path("somepath") {
get {
// Find whatever we would like to return (lazily)
...
// Marshall resource and complete depending on the `Accept` header
...
}
}
提前致谢。
最佳答案
Spray实际上正在研究Accept
header 值并对其进行验证。因此,如果route返回application/json
或text/plain
,并且客户端接受image/jpeg
,则Spray将返回406 Not Acceptable
。如果客户从该路由请求application/json
或text/plain
,则他将收到具有匹配Content-Type的回复。
这里的主要技巧是对返回对象使用正确的编码器。
您可以阅读有关编码(marshal)here的更多信息。
您也可以使用respondWithMediaType指令覆盖MediaType,但我认为最好使用正确的编码器。
关于scala - 喷涂路线: How to respond with different content-types?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21118515/