scala - 喷涂路线: How to respond with different content-types?

标签 scala routing http-headers spray http-accept-header

在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/jsontext/plain,并且客户端接受image/jpeg,则Spra​​y将返回406 Not Acceptable。如果客户从该路由请求application/jsontext/plain,则他将收到具有匹配Content-Type的回复。

这里的主要技巧是对返回对象使用正确的编码器。
您可以阅读有关编码(marshal)here的更多信息。

您也可以使用respondWithMediaType指令覆盖MediaType,但我认为最好使用正确的编码器。

关于scala - 喷涂路线: How to respond with different content-types?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21118515/

相关文章:

ruby-on-rails-3 - Rails 3 polymorphic_path-如何更改默认的route_key

backbone.js - 带状态的 Backbone 路由

python - 如何告诉 HTTP 服务器不发送分块编码

apache - 有没有办法在 apache 日志中获取内容长度(响应 header )?

scala - 继承 : override in class constructor

scala - Scala 中的字符串范围

scala - 如何在 Scala 中将 RDD 转换为二维数组?

sql - 从光滑的纯 SQL 查询返回元组列类型

angularjs - 如何从angularjs网站的url中隐藏id

java - 如何使用 Apache HttpClient 将参数添加到 HTTP header