こんばんは、Python界のひきこもりです。
モバイルアプリケーションのバックエンド開発などでRESTful APIを先ず設計する必要があるといったケースなんかで便利に利用できそうな、既存のウェブアプリケーションフレームワークの仕組みからRESTfulなAPI構成に特化してパッケージングされたサブフレームワークがいろいろ出てきているので調べました。
フレームワークに必要な機能
そもそもフレームワークにどんな機能が必要なのかというのをChoosing an API framework for Django から抜粋。
- ページネーション(アイテムの先頭から10件が1ページ目→11から20が2ページ目など)
- データの投稿とバリデーション
- メタデータの生成(result, count, next みたいな要素をレスポンスに含める為のしくみのことかな?)
- レスポンスのハンドリング
- キャッシュ
- データのシリアライズ
- データの権限制御
- ユーザー認証
従来のウェブアプリケーションフレームワークで提供される機能群のサブセットである為、既存のフレームワーク上にAPI構成をサポートするヘルパーモジュールみたいなのを継ぎ足して提供されているというのが主という印象です。
Djangoベース
- Piston
- Bitbucket内製ツールをオープンソース化したもの 。Urban Airship なんかも使っているみたい。
- Django REST framework
- Tastypie
- 比較。このサイトはじめて知ったけど良さげだ*1。
Flaskベース
- flask-mongorest
- MongoEngineっていうODM使ってる
- A Python Object-Document-Mapper for working with MongoDB
- eve
- Developing RESTful Web APIs with Python, Flask and MongoDB // Speaker Deck
- 作者によるFlaskでRESTful APIを構成する解説スライド(実践的で結構細かい)
Pyramidベース
Google App Engine
その他
おまけ: Django-Pistonに関する議論
I also got frustrated by piston a while back, and rolled my own, において@pydanny が"Don't use django-piston.","django-piston is dead."って結構強い口調で言っているんだけどどういうことなのかと言えば
- テスト書いてない
- ドキュメントない
- 元の作者もういない
- リリースがいいかげん
等のことを指しているらしい。「以前はOAuthをサポートしてるpiston使う必要あったけど今はdjango-tastypieあるよね」とも。
これについてはコメント欄で「Bitbucketなどで実績はあるみたいだけど?」「死んだ、だと活動してないみたいだから洗練されてないとかのが適切では?」とのツッコミもある。
Hacker News でもあがってた。
まぁ内容みるかぎり好みの問題だろうからユーザーが決めればいいんじゃないのと思った。