Tag: 内容类型

Rails:如何处理替代接受:内容类型为JSON?

到目前为止,我已经为request.format.json?找到了两种方法request.format.json? 在Rails中是真的(即传入请求被视为JSON)。 一种是如果您请求资源并以.json结尾,另一种情况是您在请求中提供头部Accept: application/json 。 每件作品都是独立的。 我想为第二种情况注册我自己的“接受”类型: Accept: application/vnd.myapp_v1+json并将rails视为“json请求”,如application/json ,而不需要附加.json 。 我的第一个想法是将我自己的MimeType注册为:json (在我的初始化代码中),但这实际上会破坏对application / json的支持,而不是我想做的事情。 Mime::Type.register “application/vnd.myapp_v1+json”, :json # my failed attempt

如何限制Rails路由文件中的资源格式

在Rails中路由资源时,可选的format属性会自动附加到生成的路由中。 这样可以将所讨论的资源请求为XML,HTML等。实际允许的格式通常在控制器中使用respond_to来描述。 但在许多情况下,您只想支持HTML,并且在每个控制器的每个操作中编写respond_to :html感觉都是一种开销。 因此,如果在routes.rb文件中构建路由时已经有限制允许内容类型的方法,那将是很酷的,例如 map.resources :users, :formats => :html map.resources :users, :formats => [:html, :xml] map.resources :users, :formats => {:index => :html, :show => [:html, :xml]} 有没有办法实现本机或通过插件? PS解决此问题的常用方法是忽略该问题,并且不要在操作中使用respond_to 。 但这实际上并不限制允许的内容类型。 相反,它只是期望视图目录中存在每种可能的内容类型的模板。 如果在请求时不存在,系统将抛出HTTP 500错误。

创建一个使用Sinatra的路由只接受某种内容类型

我正在尝试创建一个使用Sinatra的路由,它只接受带有Content-type: application/json POST Content-type: application/json但没有成功。 我的方法如下: post ‘/dogs’, :provides => :json do # returns here a json response end 使用curl进行测试,我已经看到:provides => :json配置路由以使用Content-Type: application/json进行响应。 这是正确的,因为我还希望用POST请求的JSON消息进行响应,但我真的需要这条路由只响应具有Content-Type: application/json POST请求,而不是响应其他人(例如Content-Type: application/xml )。 在Sinatra中是否有任何方法限制路由只接受具有特定Content-Type请求?

使用Ruby,获取给定URL的内容类型的最有效方法是什么?

使用Ruby获取给定URL的内容类型的最有效方法是什么?