我想编写一个使用以下URL调用REST API的脚本:
http://localhost:3000/api/v1/user/xyz
如果我在浏览器中打开此URL,则会询问用户的电子邮件和密码。一旦我进行了身份验证,它就会返回一个带有用户ID的JSON响应。我不知道如何通过脚本进行身份验证。有人可以给我一个建议吗?
这就是我的开始:
require 'rubygems'
require 'net/http'
require 'json'
api_url = "http://localhost:3000/api/v1//user/xyz"
response = Net::HTTP.get_response(URI.parse(api_url))
data = JSON.parse(response.body)
fields = data.keys
puts fileds
puts data.keys
这是API的身份验证:
before_filter :authorize, :except => [:keys]
private
def authorize
authenticate_or_request_with_http_basic do |username, password|
user = User.find_by_email(username)
if user && user.valid_password?(password)
sign_in :user, user
end
end
end
如何通过电子邮件和密码验证此API,以便我可以将“id”作为返回?
答案 0 :(得分:1)
HTTP基本身份验证很容易添加到您的请求中,但我认为您不能使用get_response
便捷方法。
请参阅:http://ruby-doc.org/stdlib-2.0/libdoc/net/http/rdoc/Net/HTTP.html#label-Basic+Authentication
文档中的示例:
uri = URI('http://example.com/index.html?key=value')
req = Net::HTTP::Get.new(uri)
req.basic_auth 'user', 'pass' # username, password go here.
res = Net::HTTP.start(uri.hostname, uri.port) {|http|
http.request(req)
}
puts res.body
答案 1 :(得分:1)
rest_client gem对我很有用。至于应该在文档中返回的API。您始终可以在IRB中尝试并查看响应包含的内容。