#Flaskとは
Flaskとは、Pythonのための軽量なウェブアプリケーションフレームワークです。
Pythonで用いられるフレームワークとしてはDjangoも人気ですが、
簡単なLINEボットやスマートスピーカーのアプリなど、小規模〜中規模のWebアプリケーションであれば、Flaskで作成するのが軽量かつ早く作ることができるのでオススメです。
以下のようなMicrosoft AzureのVisionAPとリクルートのAPIの機能を組み合わせたインスタ映え診断(画像診断)ができるLINEのチャットボットをFlaskで作っています。
リクルートの人工知能APIとMicrosoftのVisionAPIを合わせた肉のインスタ映え診断LINEボット完成。言語はPython。環境はHerokuです。#駆け出しエンジニアと繋がりたい pic.twitter.com/D2k3x8rHJ9
— さい (@saisan78) 2018年12月9日
#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 が設定されるようになっています。
日本語を扱うアプリを作っている人は注意です。
from flask import Flask, jsonify
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False