18 posts
In this article we are going to see how to use python packages/modules to request REST api mostly web services publicly available.
If you are requesting to an URL it should be the one of the type below from CRUD operations.
Lets say you have the API access to your resources through web services and you want to automate some tasks then you can use python requests
package.
To perform above actions using python we can use urllib or requests.
By Using urllib we can fetch the internet resources like below example.
import urllib.request
req = urllib.request.Request('http://www.voidspace.org.uk')
response = urllib.request.urlopen(req)
the_page = response.read()
If you haven't tried to get internet resources previously using python or you don't know about urllib i recommend to go with requests package.
Python requests package allows us to send request to any URL in python scripts and to fetch the response. Python requests package is not available by default and you should install it before calling it in your code. Install the requests package like below.
pip install requests
It will install requests package in your python environment. Now it is very easy to use in your scripts.
Requests package follows the same CRUD methods defined above of this article. If you want to GET request you can use just requests.get method likewise same for all requests.post, requests.put, requests.delete .
For example I am using httpbin.org as. my API provider which is publicly available.
To get any response we should pass some arguments to methods of requests package like url, params, data, auth etc. You can understand these parameters with below samples.
requests.get
import requests
req = requests.get("https://httpbin.org/get")
print req.json()
For simple get request we can pass just url and if you want to add any url parameter You can simply add below line.
req = requests.get('https://httpbin.org/get', params={"arg1": "val1", "arg2": "val2"})
Then url will become https://httpbin.org/get?arg1=val1&arg2=val2.
You can try with this open API as like you want and get practise.
requests.post
If we have an API endpoint with POST method we can use requests.post to request for that resource. We can also send POST data to that URI like below.
import requests
url = "https://httpbin.org/post"
req = requests.post(url, data={
"name": "kishore",
"skill": "python"
})
out = req.json()
print out
If you observe the output you can see how our request with POST method sent to server. You can also send files in data dictionary itself by opening the file and adding file content as another parameter in data.
If you want to send your credentials to login/authenticated some URL, you can pass auth like below.
r = requests.post("http://my_api.url.com/login", auth=("username", "password"))
print r.status_code
By using this requests package we can request any URL with the methods as we want. So remaining methods also same by using requests.put and requests.delete methods.
Please find the below reference for further information and comment if you have doubts/suggestions.
https://koderplace.com/search/?tags=python-requests
https://pypi.org/project/requests/
https://docs.python.org/3.1/howto/urllib2.html
Please log in to leave a comment.
18 posts