LoginSignup
15
33

More than 5 years have passed since last update.

Python FlaskでRestful API を作る

Last updated at Posted at 2018-12-15

Flaskとは

Flaskとは、Pythonのための軽量なウェブアプリケーションフレームワークです。
Pythonで用いられるフレームワークとしてはDjangoも人気ですが、
簡単なLINEボットやスマートスピーカーのアプリなど、小規模〜中規模のWebアプリケーションであれば、Flaskで作成するのが軽量かつ早く作ることができるのでオススメです。

以下のようなMicrosoft AzureのVisionAPとリクルートのAPIの機能を組み合わせたインスタ映え診断(画像診断)ができるLINEのチャットボットをFlaskで作っています。


Flaskをインストールする

$ pip install flask

バージョンが不安な人はアップグレードをしておきましょう。

pip install --upgrade flask

Hello Worldを試す

@app.route("/")
def index():
    return "Hello World! ハローワールド!"

if __name__ == "__main__":
    app.run()

GETでうけてJSONを返す

FlaskでGET通信を受けつけるにはmethodsにGETを指定することで、POSTリクエストを受けられます。

@app.route('/get_request', methods=['GET'])
def post_request():
    output = { ##※ここのJSONフォーマットは自由だよ
        "version":"1.0",
        "response":{
                "outputSpeech":{
                    "type":"PlainText",
                    "text":"ハロー"
                }
            }
    }

    return jsonify(output)

POSTでうけてJSONを返す

FlaskでPOST通信を受けつけるにはmethodsにPOSTを指定することで、POSTリクエストを受けられます。

@app.route('/post_request', methods=['POST'])
def post_request():
    output = { ##※ここのJSONフォーマットは自由だよ
        "version":"1.0",
        "response":{
                "outputSpeech":{
                    "type":"PlainText",
                    "text":"ハロー"
                }
            }
    }

    return jsonify(output)

jsonifyを使って日本語が文字化けする時の解決方法

Flask のアプリケーションの config に、デフォルト設定項目として JSON_AS_ASCII なるものが定義されており、app.config['JSON_AS_ASCII']=False を設定すると最終的に json.dumps に ensure_ascii が設定されるようになっています。
日本語を扱うアプリを作っている人は注意です。

参考 jsonify の日本語文字化けを解決するコード

from flask import Flask, jsonify

app = Flask(__name__) 
app.config['JSON_AS_ASCII'] = False
15
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
33