Rails 中的 RESTful 内容协商

发布于 2024-07-26 23:39:33 字数 298 浏览 5 评论 0原文

我希望对 Rails 应用程序中的某些资源实现内容协商。 我正在使用 Mootools,并且可能能够将 XMLHTTPRequest 接受的内容类型调整为“application/json”。

有什么方法可以在我的控制器中获取此信息并生成 JSON 响应而不是 XHTML?

我试图避免做类似的事情:

http://site/resource/1?format=JSON

...因为它弄脏了我的 URL,强加了一定程度的冗余并且不那么灵活。

谢谢!

I'm looking to implement content negotiation on some resources in a Rails app. I'm using Mootools and will likely be able to tweak the content type accepted by an XMLHTTPRequest to "application/json".

Is there any way to pick up on this information in my controller and generate JSON responses instead of XHTML?

I'm trying to avoid doing something like:

http://site/resource/1?format=JSON

...as it dirties up my URL, imposes a certain degree of redundancy and is not as flexible.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

淡写薰衣草的香 2024-08-02 23:39:33

http://site/resource/1.json 未正确使用内容协商。 要点是 URL 应保持不变,但客户端根据随请求发送的 HTTP 标头要求特定的表示形式(JSON、PDF、HTML 等)。

http://site/resource/1.json is not correct use of content-negotiation. The point is that the URL should remain the same, but the client asks for a specific representation (JSON, PDF, HTML etc.) based on HTTP headers it sends with the request.

不羁少年 2024-08-02 23:39:33

您可以使用 respond_to控制器方法中的节,如下所示:

respond_to do |format|
  format.html { # Generate an HTML response... }
  format.json { # Generate a JSON response... }
end

Rails 根据客户端提交的 HTTP Accept 标头的值确定响应格式。

You can use a respond_to stanza in your controller method, like this:

respond_to do |format|
  format.html { # Generate an HTML response... }
  format.json { # Generate a JSON response... }
end

Rails determines the response format based on the value of the HTTP Accept header submitted by the client.

命硬 2024-08-02 23:39:33

当然 http://site/resource/1.json 应该可以吗? 你可能需要在你的 Rails 环境中进行设置,不过,这取决于你拥有的 Rails 版本的最新版本,我对此表示怀疑。

Surely http://site/resource/1.json should work? you may need to set it up in your Rails Environment, though, depending on how current the version of Rails you have is, I doubt it.

执手闯天涯 2024-08-02 23:39:33

经过大量研究,虽然 Rails 拥有自动选择输出模板的一切功能,但它仍然需要为您希望支持的每个模板调用 respond_to

After much research, while rails has everything to automatically select a template for output, it still requires the call to respond_to for each one you wish to support.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文