読者です 読者をやめる 読者になる 読者になる

RESTfulなAPIを構成するのに特化したウェブフレームワークとか(Python編)

こんばんは、Python界のひきこもりです。

モバイルアプリケーションのバックエンド開発などでRESTful APIを先ず設計する必要があるといったケースなんかで便利に利用できそうな、既存のウェブアプリケーションフレームワークの仕組みからRESTfulなAPI構成に特化してパッケージングされたサブフレームワークがいろいろ出てきているので調べました。

フレームワークに必要な機能

そもそもフレームワークにどんな機能が必要なのかというのをChoosing an API framework for Django から抜粋。

  • ページネーション(アイテムの先頭から10件が1ページ目→11から20が2ページ目など)
  • データの投稿とバリデーション
  • メタデータの生成(result, count, next みたいな要素をレスポンスに含める為のしくみのことかな?)
  • レスポンスのハンドリング
  • キャッシュ
  • データのシリアライズ
  • データの権限制御
  • ユーザー認証

従来のウェブアプリケーションフレームワークで提供される機能群のサブセットである為、既存のフレームワーク上にAPI構成をサポートするヘルパーモジュールみたいなのを継ぎ足して提供されているというのが主という印象です。

Djangoベース

Flaskベース

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 でもあがってた。

まぁ内容みるかぎり好みの問題だろうからユーザーが決めればいいんじゃないのと思った。

まとめ

使う/使わずに開発するっていう選択肢も視野にいれつつ適当な占い感覚で推薦すると、
Django使っている人は、Tastypi,Django REST Framework。
それ以外の人はFlaskベースで。
開発現場を混沌におとしめたい人はPyramid+Corniceという感じがいいのではないでしょうか。

僕はこれから実際にさわってみてどれか検討して決めます。