加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 只能在rails中回复json

发布时间:2020-12-16 20:01:21 所属栏目:百科 来源:网络整理
导读:在我的rails应用程序只是json,我想发送一个406代码,只要有人打电话给我的rails应用程序,接受头设置为除了application / json以外的任何东西.当我将内容类型设置为除application / json以外的任何内容时,我也希望它发送一个415 我的控制器有respond_to:json
在我的rails应用程序只是json,我想发送一个406代码,只要有人打电话给我的rails应用程序,接受头设置为除了application / json以外的任何东西.当我将内容类型设置为除application / json以外的任何内容时,我也希望它发送一个415

我的控制器有respond_to:json放在他们上面.我只是在所有的动作中渲染json.但是,如何确保为所有其他接受头/内容类型调用的所有调用返回错误代码406/415,并将格式设置为除json之外的任何内容.

例如.如果我的资源是书/ 1我想允许
books / 1.json或books / 1 with application / json in accept header and content type

关于我如何做这两个动作的任何想法?

解决方法

基本上,您可以通过两种方式限制您的回复.

首先,你的控制器有respond_to.如果没有定义格式的请求,这将自动触发406不可接受.

例:

class SomeController < ApplicationController
  respond_to :json


  def show
    @record = Record.find params[:id]

    respond_with @record
  end
end

另一种方法是添加一个before_filter来检查格式并作出相应的反应.

例:

class ApplicationController < ActionController::Base
  before_filter :check_format


  def check_format
    render :nothing => true,:status => 406 unless params[:format] == 'json' || request.headers["Accept"] =~ /json/
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读