到目前为止,我已经找到了两种在 Rails 中使 request.format.json?
为 true 的方法(即传入请求被视为 JSON)。一种是您请求资源并以 .json
结尾,另一种是您在请求中提供 header Accept: application/json
。每项工作都是独立的。
我想为第二种情况注册我自己的“接受”类型:
接受: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
最佳答案
替代方案是:
api_mime_types = %W(
application/vnd.api+json
text/x-json
application/json
)
Mime::Type.unregister :json
Mime::Type.register 'application/json', :json, api_mime_types
在initializers/mime_types.rb
中。
关于ruby-on-rails - rails : how to treat alternative Accept: content-types as JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9388082/