例如..。
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部分。我需要正确地向调用方传达哪些语法,例如,身份验证没有通过,或者在其他情况下,数据可能没有保存?
发布于 2014-05-14 17:46:51
就像CBroe说的,用一个适当的状态代码来响应,比如400或403。您可以这样做(只使用“head”返回状态代码),也可以添加JSON格式的错误消息:
{ 'error' : 'Authorization failed' }
客户端代码将希望检查状态代码以及JSON响应中的“error”键,并对其进行适当处理。
在控制器操作结束时要列出的示例(选择一个):
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这样的符号。希望这能有所帮助。
https://stackoverflow.com/questions/23661333
复制相似问题