2022-10-13
Posted by
info
環境:
- windows 10
- python 3.9
さて環境を構築していこう
仮想環境を作る
まずは適当なフォルダーを作りましょう
A:/abc/osaka/main>mkdir flask-api
そのフォルダーに移動し
A:/abc/osaka/main>cd flask-api
仮想環境を作りましょう
仮想環境を作らなくても実行はできますが
パッケージ管理が面倒です
コードを書いているとversionごとに挙動が変わる事が多いので仮想環境を作る事を推奨します
仮想環境は以下のコマンドで作成出来ます
A:/abc/osaka/main/flask-api>python -m venv <folder-name>
<folder-name>は適当でも良いですがvenv
などが良く使用されています
次は仮想環境に入ります
まだ作っただけなので入らないといけません
A:/abc/osaka/main/flask-api>venv\Scripts\activate
(venv) A:/abc/osaka/main/flask-api>
info
<folder-name>\Scripts\activate
これでCommand promptが
C:\example>
などから(venv) C:\example
などになっていれば入れています
出たくなりましたか?
簡単に出れます
(venv) A:/abc/osaka/main/flask-api>deactivate
後は普通のCommand promotと同じように使用できます
Flaskを仮想環境に入れる
後は簡単で
(venv) A:/abc/osaka/main/flask-api>pip install flask
で導入できます
Hello, world! を実行する
flask -app app runで実行する
現在flask-api(冒頭に作った適当なフォルダー)以下のようになっています
flask-api
venv
そこにpythonファイルを追加しましょう
今回はapp.pyを追加しました
flask.pyはflaskと競合する可能性が有るので避けた方が良いでしょう
するとファイル構造は、以下のようになります
flask-api
venv
app.py
app.pyにflaskで最も知られているhello, world!を書きましょう
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
とてもシンプルで良いプログラムですね
実行してみましょう
実行は簡単で
flask --app <file-name> run
と入力すると実行できます
(venv) A:/abc/osaka/main/flask-api>flask --app app run
* Serving Flask app 'app'
* Running on http://127.0.0.1:5000 (Press CTRL+C to quit)
http://127.0.0.1:5000/
にアクセスするとhello, world!と文字が表示されます
が個人的にその実行方法は複雑で好きではありません
python app.pyで実行する
プログラムをpython app.pyで実行できるよう変更します
1
2
3
4
5
6
7
8
+
9
+
10
+
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
少し複雑化したように感じるかもしれませんが実行が簡単になり細かく設定できるようになりました
これで実行できます
(venv) A:/abc/osaka/main/flask-api>python app.py
* Serving Flask app 'app'
* Running on http://127.0.0.1:5000 (Press CTRL+C to quit)
一応先ほどののコマンドでも実行することは可能です
Hello, world! をAPIにする
先ほどのコードでもいいですがあれはhtmlを返しています
やはりapiと言えばjsonですよね
jsonで返しましょう
1
-
2
+
3
4
5
6
7
8
-
9
+
10
11
12
from flask import Flask
from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
return jsonify("Hello, World!")
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
これでhtmlの代わりにjsonを返すようになりました
jsonifyにstringやobjectなどの引数を渡せばその引数をjsonとして返してくれます
これで終わりです
面倒な環境構築も終わり後はコードを書くだけです
このドキュメントどう?