当您需要回复错误信息时,如何在Rails API中使用JSON进行响应?

时间:2014-05-14 17:30:42

标签: ruby-on-rails json

例如......

module Api
    module V1
        class SessionsController < ApplicationController
            respond_to :json
            skip_before_filter :verify_authenticity_token

            def create
                @user = User.find_by(email: params[:session][:email].downcase)
                if @user && @user.authenticate(params[:session][:password])
                    token = User.new_remember_token
                    @user.update_attribute(:remember_token, User.digest(token))
                    respond_with :api, :v1, _____________
                else
                    #error
                end
            end
        end
    end
end

代码的#error部分,如果用户未经过适当的身份验证。我需要使用什么语法向调用者正确传达身份验证未通过的示例,或者在其他情况下,可能还没有保存数据?

1 个答案:

答案 0 :(得分:6)

如同CBroe所说,使用适当的状态代码(例如400或403)进行回复。您可以这样做(使用&#39; head&#39;仅返回状态代码),或者还添加错误消息JSON格式:

{ 'error' : 'Authorization failed' }

客户端代码需要检查状态代码以及可能的错误&#39;键入JSON响应并适当地处理它。

放在控制器操作结束时的示例(选择一个):

return head(:bad_request)  # returns a 400 status code only

render :json => { :error => 'That was an invalid request' } # defaults to 200 status

render :json => { :error => 'Oops! Bad request' }, :status => 400 

最后一个示例会覆盖默认状态以使其为400.通常,状态可以是类似的整数,也可以是符号,如:not_found或:bad_request。希望有所帮助。