繁体   English   中英

Rails路由加速HTTP和JSON请求

[英]Rails route accetping http and json requests

我正在使用rails创建REST api,并且有一个简单的问题与Routes以及如何接受对我的api的请求有关。

在我的路线文件中,我有以下代码:

namespace :api do
   namespace :v1 do
      resources :productOp, :path => "product", :defaults => { :format => 'json' }
   end
end

使用此代码,如果我在网络浏览器中转到URL:

http://localhost:3000/api/v1/product

可以。 另一方面,它仅接受json格式的帖子

如果删除了“:defaults => {:format =>'json'}”,则无法在网络浏览器中打开相同的URL,则会收到一条406 http消息,因为它试图找到我的#index HTML。

谁能为我解释为什么删除“:defaults => {:format =>'json'}”时为什么会发生? 以及如何使API可以接受http发布请求和json?

为了添加信息,我的控制器始终以json格式响应,为此我在第一行的控制器“ respond_to:json”中包含了该信息。

当您在其中拥有默认哈希值时,就是在告诉Rails默认情况下使请求成为JSON,无论您是否指定它。 通过删除它,rails将不会执行此操作,因此当您尝试自己导航到页面时,rails会将其假定为HTML请求,如果您不处理它,它将失败。

忘记

在控制器操作中,您可能没有告诉Rails它也可以返回HTML。 如果仅返回JSON,则rails正确无法正常工作,但是请注意,这并不是说找不到它,您将得到406 not 404。

尝试类似的东西:

respond_to do |format|
  format.json { render json: @whatever }
  format.html {}
end

html然后将简单地呈现您的索引视图,并且json请求将返回您想要的JSON

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM