Python und REST
Wer REST Webservices mit Python erstellen möchte, steht vor vielen möglichen Lösungen dafür. Insbesondere wenn es für einen Prototypen schnell gehen soll, sollte man ein fertiges Framework dafür nutzen. Einige, die dafür in Frage kommen, sind CherryPy, web.py, Pylons, Django, selector und yaro.
CherryPy
CherryPy ist ein "richtiges" Web-Framework, also nicht nur für Webservices, sondern auch für komplexere Webseiten. Ein kurzes Beispiel für einen REST Webservice in CherryPy gibt es bei stackoverflow. Ein Cherrypy Tutorial gibt es im CherryPy Wiki.
web.py
web.py ist ebenfalls ein Web-Framework, aber wesentlich leichtgewichtiger als CherryPy. Ein Beispiel für ein REST Webservice (entnommen von der web.py Homepage):
import web urls = ( '/(.*)', 'hello' ) app = web.application(urls, globals()) class hello: def GET(self, name): if not name: name = 'world' return 'Hello, ' + name + '!' if __name__ == "__main__": app.run()
Ein weiteres Beispiel gibt es bei jhcore.com.
Pylons
Pylons ist auch ein Web-Framework. Auf Pylon bin ich durch Luchitas Blog gestoßen. REST kann mittels decorators in das Framework integriert werden. Mehr dazu in der Pylons Doc.
Django
Django dürfte wohl eines der bekanntesten Python Web Frameworks sein. Insbesondere mit dem Django REST Framework ist auch damit eine einfache REST Implementierung machbar. Siehe auch bei stackoverflow.
Selector und yaro
Selector und yaro sind beides einfach WSGI Frameworks. Insbesondere wenn man durch die obigen Frameworks nicht zu stark eingeschränkt sein möchte, könnten diese einen Versuch wert sein.
Wer trotzdem noch weitere Frameworks anschauen möchte, findet im Python Wiki noch mehr. Viel Spaß und Happy Coding!
Kleines Update: Wer die Services dann noch öffentlich laufen lassen möchte und nicht nur auf seinem Entwicklungssystem, sollte sich mal die Google App Engine anschauen. Es handelt sich um eine Python (oder Java) Sandbox, in der man seine gesamte Applikation kostenfrei (bis zu relativ hoch gesteckten Grenzen) auf der Google Infrastruktur laufen lassen kann.