0

次のような 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」を返すにはどうすればよいですか?

4

2 に答える 2

1

rest_client gemは私にとって非常にうまく機能します。APIが返すものに関しては、ドキュメントにあるはずです。いつでも IRB で試して、応答の内容を確認できます。

于 2013-06-21T18:23:46.893 に答える
1

get_responseHTTP 基本認証をリクエストに追加するのは非常に簡単ですが、便利な方法を使用できるとは思いません。

参照: 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
于 2013-06-21T18:13:50.290 に答える