Create a simple REST web service with Python
This is a quick tutorial on how to create a simple RESTful web service using python.
The rest service uses web.py to create a server and it will have two URLs, one for accessing all users and one for accessing individual users:
http://localhost:8080/users
http://localhost:8080/users/{id}
First you will want to install web.py if you don't have it already.
sudo easy_install web.py
Here is the XML file we will serve up.
user_data.xml<users>
<user id="1" name="Rocky" age="38"/>
<user id="2" name="Steve" age="50"/>
<user id="3" name="Melinda" age="38"/>
</users>
The code for the rest server is very simple:
rest.py#!/usr/bin/env python
import web
import xml.etree.ElementTree as ET
tree = ET.parse('user_data.xml')
root = tree.getroot()
urls = (
'/users', 'list_users',
'/users/(.*)', 'get_user'
)
app = web.application(urls, globals())
class list_users:
def GET(self):
output = 'users:[';
for child in root:
print 'child', child.tag, child.attrib
output += str(child.attrib) + ','
output += ']';
return output
class get_user:
def GET(self, user):
for child in root:
if child.attrib['id'] == user:
return str(child.attrib)
if _name_ == "_main_":
app.run()
To run your service, simply run:
./rest.py
This creates a web server on port 8080 to serve up the requests. This service returns JSON responses, you can use any of the following URLs to see an example:
http://localhost:8080/users
http://localhost:8080/users/1
http://localhost:8080/users/2
http://localhost:8080/users/3
Don't forget to check out my python shell scripting tutorial.