requestsとjsonを使用すると、簡単になります。
- API を呼び出す
json.loads
API が JSON を返すと仮定すると、関数を使用して JSON オブジェクトを Python dict に解析します。
- dict をループして情報を抽出します。
Requestsモジュールは、成功と失敗をループする便利な機能を提供します。
if(Response.ok)
: API 呼び出しが成功したかどうかを判断するのに役立ちます (応答コード - 200)
Response.raise_for_status()
API から返される http コードを取得するのに役立ちます。
以下は、このような API 呼び出しを行うためのサンプル コードです。githubにもあります。このコードは、API がダイジェスト認証を利用することを前提としています。これをスキップするか、他の適切な認証モジュールを使用して、API を呼び出すクライアントを認証できます。
#Python 2.7.6
#RestfulClient.py
import requests
from requests.auth import HTTPDigestAuth
import json
# Replace with the correct URL
url = "http://api_url"
# It is a good practice not to hardcode the credentials. So ask the user to enter credentials at runtime
myResponse = requests.get(url,auth=HTTPDigestAuth(raw_input("username: "), raw_input("Password: ")), verify=True)
#print (myResponse.status_code)
# For successful API call, response code will be 200 (OK)
if(myResponse.ok):
# Loading the response data into a dict variable
# json.loads takes in only binary or string variables so using content to fetch binary content
# Loads (Load String) takes a Json file and converts into python data structure (dict or list, depending on JSON)
jData = json.loads(myResponse.content)
print("The response contains {0} properties".format(len(jData)))
print("\n")
for key in jData:
print key + " : " + jData[key]
else:
# If response code is not ok (200), print the resulting http error code with description
myResponse.raise_for_status()