CentOS7でPython + Flask + uWSGI + Nginxをやってみた2

前回からの続き

前回はHello Worldを表示させるだけでしたが、今回は以下の機能を付け加えてWeb APIっぽくしてみます。
・http://[ip address]:8080/api などサブディレクトリで動くようにする。
・Post送信したパラメータを受け取れるようにする。

サンプル

from flask import Flask, request
app = Flask(__name__)

@app.route("/api")
def call1():
    return "called api"

@app.route("/api/param", methods=['POST'])
def call2():
    param1= request.form['param1']
    param2= request.form['param2']
    return "called api " + param1 + param2

if __name__ == "__main__":
    app.run()
[uwsgi]
module = api
callable = app
master = true
processes = 1
socket = /tmp/api.sock
chmod-socket = 666
vacuum = true
die-on-term = true
touch-reload=/path/to/app/reload_api.trigger

※Pythonのファイル名がapi.pyなのでmoduleにapiを設定

Nginxの設定

server {
    listen       8080;

    location /api {
        include uwsgi_params;
        uwsgi_pass unix:///tmp/api.sock;
    }
}

uWSGIリロード

touch /path/reload_api.trigger

実行

uwsgi --ini api.ini

ブラウザからアクセス(/api)

http://[ip address]:8080/api

called api が表示されればOK

POST送信でアクセス(/api/param)

http://[ip address]:8080/api/param

上記にPOST送信する。 called api + [param1] + [param2] が表示されればOK