我在 ruby on Rails 应用程序中使用 RestClient 向我的应用程序的 api 发送 get 请求,如下所示:
RestClient.get(url?params1=<val1>¶m2=<val2>..)
问题是我还必须传递 secret API key 才能访问 get 请求 header 中的 api。我不知道如何在请求 header 中传递此参数以及如何在 Controller 内访问此参数 api_key 以验证请求以访问该 api。所以我想要这样的东西:
class StudentsController < ApplicationController
before_filter :validate_access, :only => [:<api_name>]
private
def validate_access
.... < I don't have any idea what to write here>
在此restrict_access函数中,我想检查请求 header 中api_key的值,以确定该请求是否将被授予对该函数的访问权限。
最佳答案
您可以通过第二个参数将 header 值设置为 RestClient.get
。
RestClient.get "/url?params1=<val1>¶m2=<val2>..", {x_your_api_token: "YOUR_API_TOKEN"}
而在ActionController中,可以通过request.headers["X-Your-API-Token"]来获取
def validate_access
api_token = request.headers["X-Your-API-Token"] # header name is case insentsitive
...
end
参见:
关于ruby-on-rails - 如何在RestClient获取请求头中传递参数并访问 Controller 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20510573/