Rails 中的基本 API
Basic API in Rails
假设我有一个带有 returnjson
动作的 Users
控制器。假设我想创建一个 API,因此当客户端调用该方法时,它会将用户的数据 return 发送给客户端。例如:
https://www.example.com/returnjson?username&password
JavaScript 将使用 URL 发出获取请求,而 rails 将比 return JSON 格式的用户信息.我该怎么做?
提前致谢!
哦,我明白了,您只想 return 参数中请求的属性。对不起。
首先,我只想为此使用 show
操作,而不是创建新操作。 show
在语义上的目的是 return 一条记录的数据,因此它是此作业的正确操作。
您的请求参数结构不合理 - 我会像
那样构造它们
https://www.example.com/users/123?required[]=username&required[]=password
这会给你
params = {:required => ["username", "password"]}
我会这样做:
def show
@user = User.find_by_id(params[:id])
respond_to do |format|
format.html #default to standard 'render the show template'
format.js #default to standard 'render .js file' or whatever
format.json do
#filter out the ones we want
if params[:required]
hash = @user.attributes.slice(params[:required])
else
hash = @user.attributes
end
#this will automatically call `.to_json` on the thing we pass to it (`hash` in this case)
render json: hash
end
end
end
您可以在此处添加额外的安全措施,例如限制您通过 api.
访问的字段
假设我有一个带有 returnjson
动作的 Users
控制器。假设我想创建一个 API,因此当客户端调用该方法时,它会将用户的数据 return 发送给客户端。例如:
https://www.example.com/returnjson?username&password
JavaScript 将使用 URL 发出获取请求,而 rails 将比 return JSON 格式的用户信息.我该怎么做?
提前致谢!
哦,我明白了,您只想 return 参数中请求的属性。对不起。
首先,我只想为此使用 show
操作,而不是创建新操作。 show
在语义上的目的是 return 一条记录的数据,因此它是此作业的正确操作。
您的请求参数结构不合理 - 我会像
那样构造它们https://www.example.com/users/123?required[]=username&required[]=password
这会给你
params = {:required => ["username", "password"]}
我会这样做:
def show
@user = User.find_by_id(params[:id])
respond_to do |format|
format.html #default to standard 'render the show template'
format.js #default to standard 'render .js file' or whatever
format.json do
#filter out the ones we want
if params[:required]
hash = @user.attributes.slice(params[:required])
else
hash = @user.attributes
end
#this will automatically call `.to_json` on the thing we pass to it (`hash` in this case)
render json: hash
end
end
end
您可以在此处添加额外的安全措施,例如限制您通过 api.
访问的字段