我正在尝试使用respond_with方法使用rails创建一个简单的rest api,但它不想输出任何类型的状态消息
例如,我希望它不仅可以返回json以获取get调用,还可以返回ok状态。当帖子或删除工作/失败时相同。
有几个教程建议使用额外的:状态参数,但它们似乎根本不会影响输出。
def index
@conns = Connection.all
respond_with(@conns, :status => :ok)
end
返回与if:status =>完全相同的内容。 :好的不在那里。
任何想法??
谢谢!
答案 0 :(得分:8)
:status => :ok
设置HTTP标头的状态代码,即它与:status => 200
相同。如果要向响应主体添加内容,则需要明确添加内容,例如
respond_with({:conns => @conns, :status => :success}.to_json)
修改强>
好的,这样就行不通了。如果你不需要回答除JSON之外的任何事情,你可以使用好的render
:
render :json => { :conns => @conns, :status => :success }
如果您必须使用明亮且闪亮的新respond_with
方法来容纳多种响应类型,则可以创建一个响应as_json
的类:
class JsonResponse
def initialize(data,status)
@data = data
@status = status
end
def as_json(options={})
{
:data => @data,
:status => @status
}
end
end
然后这样称呼它:
@conns = Connection.all
respond_with(JsonResponse.new(@conns,"success"))
答案 1 :(得分:2)
这是因为它会隐式返回:status => :ok
,当响应没问题时,我猜它是:)
尝试使用其他状态代码,例如
:status => :not_found
导轨上的官方红宝石中有一个full list of status codes。