Javascript Rails中的基本API
假设我有一个Javascript Rails中的基本API,javascript,ruby-on-rails,json,api,url,Javascript,Ruby On Rails,Json,Api,Url,假设我有一个Users控制器,带有returnjson操作。假设我想创建一个API,这样当客户端调用该方法时,它会将用户的数据返回给客户端。例如: JavaScript将使用该URL发出get请求,rails将以JSON格式返回用户信息。我该怎么做呢 提前谢谢 哦,我明白了,您只想返回参数中请求的属性。对不起 首先,我只想让我们看一下这方面的动作,而不是做一个新动作。从语义上讲,show的目的是返回单个记录的数据,因此这是该作业的正确操作 您的请求参数的结构不是很好-我会像 那会给你什么 p
Users
控制器,带有returnjson
操作。假设我想创建一个API,这样当客户端调用该方法时,它会将用户的数据返回给客户端。例如:
JavaScript将使用该URL发出get请求,rails将以JSON格式返回用户信息。我该怎么做呢
提前谢谢 哦,我明白了,您只想返回参数中请求的属性。对不起 首先,我只想让我们看一下这方面的
动作,而不是做一个新动作。从语义上讲,show
的目的是返回单个记录的数据,因此这是该作业的正确操作
您的请求参数的结构不是很好-我会像
那会给你什么
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访问的字段。Rails已经内置了所有用于此功能的机制。请参见中的“2.2.9呈现JSON”,但是对于链接/returnjson?username=bob&password=p4ssw0rd
,我如何访问get请求传入的用户名和密码参数params[:username]
应该等于bob
和p4ssw0rd
,出于明显的安全原因,不建议在GET请求中传递密码。改用POST;-)@Yoshiji先生感谢您的回复。最后一个问题。路线会是什么样子?我认为resources:users
不足以获取参数,或者它会吗?不,resources:users
将只提供基本的CRUD操作(创建、检索、更新、删除,分别是控制器的操作create、index、update、delete(和show操作))。在您的情况下,您需要一个将返回json的自定义操作。如果您想将其命名为returnjson
(这在我看来不是很一致),您可以执行post:returnjson,controller:'controller_name#action_name'
来创建到/returnjson
的post路由