如何根据域名更改视图格式
Posted
技术标签:
【中文标题】如何根据域名更改视图格式【英文标题】:Howto change view format based on domain name 【发布时间】:2011-01-21 12:28:58 【问题描述】:我想知道是否有任何方法可以根据域名更改同一个rails应用程序的视图格式。
例如:
www.domain.com => respond_to format.html api.domain.com => respond_to format.xml 或 format.json感谢大家的帮助
【问题讨论】:
你当然可以调整 apache 配置来做到这一点。 【参考方案1】:是的,在控制器中使用 before_filter 并根据request.host
的值设置response.format
。
class Controller < ActionController::Base
before_filter :adapt_response_format
protected
def adapt_response_format
response.format = case request.host
when "xml.foo.com" then :xml
else :html
end
end
【讨论】:
太棒了!非常感谢!【参考方案2】:这是我猜测是您的问题的另一种方法。
为什么不要求您的客户根据他们想要的格式将 Accept 标头设置为 application/xml 或 application/json?您可以默认提供 html 以支持网络浏览器。
这样你就不需要有两个不同的主机了。
【讨论】:
内容协商?!你疯了吗,达雷尔!?我开玩笑,我开玩笑。 ;) @Mike 我知道,按照预期使用 HTTP 功能似乎很疯狂。 使用不同主机的优缺点是什么?我看到很多网站在 api 子域上实现了他们的 api:api.domain.com。一些事件将其静态内容放在 static.domain.com 上。以上是关于如何根据域名更改视图格式的主要内容,如果未能解决你的问题,请参考以下文章