This post introduces how to make a request to REST API using Python.
requests package is the commonly used one (its GitHub repo).
You can try out requests online here at codecademy, and here at runnable.com
Look at this post for a great tutorial using Requests with Python to make a request to REST API: Python API tutorial – An Introduction to using APIs (pdf) – a very good, comprehensive, and detailed tutorial.
To install Requests, simply:
$ pip install requests
See below for a simple example to make a request to REST API.
#Python 2.7
#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 dictionary 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 (dictionary or list, depending on JSON)
jData = json.loads(myResponse.content)
#jData = json.loads(myResponse2.content, 'utf-8') #use this line if your data contains special characters
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()
======working with JSON data
For example, if data.json
file looks like this:
{
"maps":[
{"id":"blabla","iscategorical":"0"},
{"id":"blabla","iscategorical":"0"}
],
"masks":
{"id":"mask-value"},
"om_points":"value",
"parameters":
{"id":"blabla3"}
}
The python code should be something looks like this:
import json
with open('data.json') as data_file:
data = json.load(data_file)
print(data)
We can now access single values in the json file — see below for some examples to get a sense of it:
data["maps"][0]["id"] # will return 'blabla'
data["masks"]["id"] # will return 'mask-value'
data["om_points"] # will return 'value'
References:
- Making a request to a RESTful API using python (pdf)
- Python API tutorial – An Introduction to using APIs (pdf) – a very good, comprehensive and detailed tutorial.
- Using the Requests Library in Python (pdf) – very good.
- HTTP / RESTful API Calls with Python Requests Library (pdf)
- HTTP requests and JSON parsing in Python (pdf)
- A python RESTful API consumer (pdf) -very good
- Python requests deep dive
- Learn REST API with Python script, slides : http://www.slideshare.net/larrycai/learn-rest-apiwithpython