Я хочу получать данные из API, используя Python.В документации по API приведены примеры на CURL и Ruby.Я был бы очень рад, если бы вы могли опубликовать фрагменты кода о том, как сделать следующие вещи с Python.
Чтобы получить токен аутентификации:
Пример Curl:
curl -X POST -d "{\"username\" : \"user@sample.com\", \"password\":\"sample\"}" http://api.sample.com/authenticate
Пример Ruby:
require 'rubygems'
require 'rest_client'
require 'json'
class AuthorizationClient
attr_accessor :base_url
def initialize(base_url)
@base_url = base_url
end
def authenticate(username,password)
login_data = { 'username' => username, 'password' => password}.to_json
begin
JSON.parse(RestClient.post "#{@base_url}/authenticate", login_data, :content_type => :json, :accept => :json)['output']
rescue Exception => e
JSON.pretty_generate JSON.parse e.http_body
end
end
end
client = AuthorizationClient.new('http://api.sample.com/authenticate')
puts client.authenticate('user@sample.com','sample')
После аутентификации для получения данных:
Пример CURL:
curl http://api.sample.com/data/day/2011-02-10/authToken/80afa08-1254-46ee-9545-afasfa4565
И код Ruby:
require 'rubygems'
require 'rest_client'
require 'json'
class ReportingClient
attr_accessor :auth_token, :base_url
def initialize(base_url)
@base_url = base_url
end
def authenticate(username,password)
login_data = { 'username' => username, 'password' => password}.to_json
response = RestClient.post "#{@base_url}/authenticate", login_data, :content_type => :json, :accept => :json
@auth_token = JSON.parse(response)['output']
end
def get_report(start_date, end_date)
response = RestClient.get "#{@base_url}/data/day/#{day}/authToken/#{auth_token}"
JSON.parse(response)
end
end
client = ReportingClient.new('http://api.sample.com:20960')
client.authenticate('user@sample.com','sample')
results = client.get_report('2011-02-10')
puts JSON.pretty_generate(results)
Спасибо ..
PS: я знаю о pycurl.Но я не уверен, действительно ли мне это нужно.Я счастлив с использованием нативных библиотек Python.Pycurl может быть слишком большим для моих нужд.
Я новичок в Python и не смог найти правильного решения после прочтения документации 'urllib2' и пробных примеров.