PythonでWebサーバーを起動する

PythonでWebサーバーを起動する方法は簡単です。

python -m http.server --cgi

これだけです。
カレントディレクトリがルートディレクトリになります。Pythonで作成したプログラムを実行したいときは「cgi-bin」フォルダの中にスクリプトを作成します。

flaskを使ってみる

最初の方法だと、ちょっとシンプル過ぎて使いにくいです。
そこで、flaskというpythonのwebフレームワークを使います。
フレームワークというと苦手かもしれませんが、flaskは安心です。
そんなに覚えることがありません。
簡単なWebAPIサービスくらいなら1ファイルで作れてしまいます。

from flask import Flask
import json

app = Flask(__name__)

@app.route('/')
def hello():
    name = "Hello World"
    return name

@app.route('/good')
def good():
    name = "Good"
    return name

@app.route('/json')
def json_ex():
    return json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])

@app.route('/getUser/<string:userId>', methods=['GET'])
def get_user(userId):
    return json.dumps(userId)

## ここからはじまる
if __name__ == "__main__":
    app.run(debug=True)

起動するときはpythonで普通に実行するだけです。

python 作成したファイル

で何も考えなくても起動します。

 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 287-879-094
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

というログが表示されるので
http://127.0.0.1:5000/ にアクセスすると表示されます。

上の例だと

http://127.0.0.1:5000/json

にアクセスすれば json_ex() 関数が実行されます。
とてもシンプルであることがわかると思います。
もちろんポート番号の変更もできます。
スクリプトの最後の部分を

app.run(host='0.0.0.0', port=80)

にするだけです。

特集記事

Posted by @erestage