Я пытаюсь сделать Python Wrapper для API. Я смог создать скрипты, которые работают нормально, но не используют классы. Я хочу сделать реальную оболочку этого API, используя классы. Я новичок в OOP в Python.Создание оболочки python для API с использованием классов
Последовала моя попытка, но я застрял в том, как преобразовать ее в тип OO.
import urllib2
from urllib import urlencode
import json
class apiclient:
def __init__(self,
request_url,
hmh_api_key,
client_id,
grant_type="password",
username="username",
password="password"):
values = {
"client_id": client_id,
"grant_type": grant_type,
"username": username,
"password": password
}
data = urlencode(values)
req = urllib2.Request(request_url, data)
req.add_header("Api-Key", api_key)
response = urllib2.urlopen(req)
response_header = response.info().dict
response_body = response.read()
json_acceptable_string = response_body.replace("'", "\"")
response_body_dict = json.loads(json_acceptable_string)
return response_body_dict ## this is the response
if __name__ == "__main__":
API_KEY = "75b5cc58a5cdc0a583f91301cefedf0c"
CLIENT_ID = "ef5f7a03-58e8-48d7-a38a-abbd2696bdb6.hmhco.com"
REQUEST_URL = "http://some.url"
client = apiclient(request_url=REQUEST_URL,
api_key=API_KEY,
client_id=CLIENT_ID)
print client
Без классов, я получаю ответ JSON как response_body_dict
, но с классами я TypeError: __init__() should return None
. Как мне приступить к разработке моей программы. Я показал только часть всей программы, существует много похожих сценариев, которые отправляют запросы на URL-адреса и получают ответы JSON.
Спасибо!
Тогда как я должен переписать его так, что я могу для ввода любых ключей, которые я указал, и получить ответ JSON, поскольку он содержит другой ключ, который должен использоваться в других API-интерфейсах? –
@AnimeshPandey, я отредактировал свой ответ на пакет для решения, которое вам нужно. –
Тем временем я попробовал другое, где я на самом деле указывал каждый ключ как 'self.client_id' и т. Д. В' __init__'. и делать все остальные работы в отдельной функции. Наверное, это то же самое, что и вы? –