Edited at

Python軽量フレームワークFalconでAPI開発 入門(その1)

More than 1 year has passed since last update.


Falconとは?

Falconは、Pythonの軽量フレームワークの一種で、WSGIアプリケーションでもあります。

シンプルな設計と圧倒的な速度が特徴です。

Pythonフレームワークと言えば、主にDjango,Flask,Bottleなどが有名ですが、Falconは他のフレームワークのようにO/Rマッパなどのフレームワーク一つあればWEBアプリケーションが作成できるような機能は備えていません。

シンプルにリクエストが来たらjsonなどのレスポンスを返すだけのフレームワークですが、その分他のフレームワークよりはパフォーマンスは最速です。

主な用途としては、WEB APIを構築するためのWSGIアプリケーションとして適しています。


チュートリアル

実際にチュートリアルとして、FalconでWebAPIを作成してみましょう。今回はリクエストが飛んだ場合に、jsonを返すシンプルなWebAPIを作成します。

Pythonのバージョンとしては自分はPython 3.4を使用していますが、Python 3.0系であれば、特に問題はないと思います。

以下が続きの内容となっています。

Python軽量フレームワークFalconでAPI開発 入門(その2)

Python軽量フレームワークFalconでAPI開発 入門(その3)


インストール

まずはpipを使って、falconを導入しましょう。非常に簡単です。

$ pip install falcon


実装

実際にコーディングしていきましょう。以下は127.0.0.18000番ポートに向かってGETリクエストを飛ばすと、メッセージ付きのjsonが返ってくるというものです。非常に簡単に実装できます。


app.py

import json

import falcon

class AppResource(object):

def on_get(self, req, resp):

msg = {
"message": "Welcome to the Falcon"
}
resp.body = json.dumps(msg)

app = falcon.API()
app.add_route("/", AppResource())

if __name__ == "__main__":
from wsgiref import simple_server
httpd = simple_server.make_server("127.0.0.1", 8000, app)
httpd.serve_forever()


上記のコードを少し詳しく見ていきます。

app = falcon.API()

app.add_route("/", AppResource())

ここの処理でAPIを定義しています。add_routeメソッドでURLパスを指定し、そのURLパスのリクエストに対して、どのResourceクラスが担当するかを指定しています。

Resourceクラス自体は継承もしていないただのPythonのクラスです。

上記では、ルートパスに対してリクエスト(つまりhttp://127.0.0.1:8000)が飛んで来た場合に、その処理をAppResource()というクラスに任せています。

class AppResource(object):

def on_get(self, req, resp):

msg = {
"message": "Welcome to the Falcon"
}
resp.body = json.dumps(msg)

on_getというメソッドで、GETリクエストを処理しています。

同じURLパスに対して、POSTリクエストをした場合は、on_postというメソッドを定義することで、POSTリクエストに対する処理も行えます。

上記はGETリクエストが飛んで来た場合に、msgというディクショナリ(辞書)型を定義し、json型に変換してresp(レスポンス)のボディ部に格納して、レスポンスを返しているというものです。

if __name__ == "__main__":

from wsgiref import simple_server
httpd = simple_server.make_server("127.0.0.1", 8000, app)
httpd.serve_forever()

WSGIサーバーを起動するための処理です。

WSGIServerクラスは WSGI サーバのリファレンス実装です。WSGIアプリケーションであるFalconのappをsimple_server.make_serverの引数として与えて実行しています。


動作

実際にFalconのアプリケーションを動かしてみましょう。

$ python app.py

以下を実行してGETリクエストを投げて見ましょう。

$ curl -v 127.0.0.1:8000


まとめ

これで実際にシンプルなWebAPIが完成します。

Falconは他にもHookとMiddlewareという機能がありますが、次回にご紹介します。