17 01 2013 Python javascript Flask Tweet
ちょっと色々あってSpine.jsからBackbone.jsに乗り換えることにした。で、REST-APIが使いたかったので、Flask-RESTfulで書いてみた。
from flask import Flask, request from flask.ext.restful import Resource, Api app = Flask(__name__) api = Api(app) todos = {} i = 0 class TodoSimple(Resource): def get(self, tid): return {"tid": tid, "todo": todos[tid]} def put(self): global i tid = i i = i + 1 todos[tid] = request.form['data'] return {"tid": tid, "todo": todos[tid]} def post(self, tid): todos[tid] = request.form['data'] return {"todo": todos[tid]} def delete(self, tid): deldata = todos[tid] del(todos[tid]) return {"tid": tid, "todo": deldata} api.add_resource(TodoSimple, '/', '/<int:tid>') if __name__ == '__main__': app.run(debug=True)
curlで確かめた。
$ curl http://localhost:5000/ -d "data=Remember the Flask" -X PUT {"tid": 0, "todo": "Remember the Flask"} $ curl http://localhost:5000/ -d "data=Remember the Python" -X PUT {"tid": 1, "todo": "Remember the Python"} $ curl http://localhost:5000/0 {"tid": 0, "todo": "Remember the Flask"} $ curl http://localhost:5000/0 -d "data=Remember the Sphinx" -X POST {"todo": "Remember the Sphinx"} $ curl http://localhost:5000/0 {"tid": 0, "todo": "Remember the Sphinx"} $ curl http://localhost:5000/0 -X DELETE {"tid": 0, "todo": "Remember the Sphinx"} $ curl http://localhost:5000/0 {"status": 500, "message": "Internal Server Error"}
今回はMongoDBを使いたかったので Flask-RESTfulを検討しているのだけど、SQLAlchemyでいいんだったらFlask-RESTlessでいいかもしれない。メソッド自分で書かなくていいし。