【Python】Flask + MySQL + SQLAlchemyでAPIを開発してみよう Part1
2019.08.19
こんにちは、せんだです。
暑さが厳しい今日この頃、みなさんはお元気にお過ごしでしょうか?
せんだはと言うと相変わらず毎日チャリ通です。この暑さだとなりふり構っていられないので、
保冷剤をタオルでくるんだものを首に巻いて出勤している状態です…
早く涼しい季節になって欲しい!
さて本題ですが、今回から数回に分けてPythonの軽量フレームワーク「Flask」を使ってAPIを作ってみたいと思います。
今回やること
- Flaskインストール
- ルーティング
- レスポンス
では早速やっていきます ※今回はDB使いません
環境
端末:Mac Book Pro
Pythonバージョン: 3.6.8
Flaskバージョン: 1.0.3
MySQLバージョン: 5.7
SQLAlchemy バージョン:1.3.4
Flaskのインストール
最初に下記のコマンドでFlaskをインストールします。
1 | $ pip install Flask |
インストールしたら、ファイルを作っていきます。
今回は下記のようなディレクトリ構成でやっていこうと思います。app.pyが起動ファイルです。
api/__init__.pyに実際の処理を記述しています。
Flaskではモジュール分割の仕組みとしてblueprintという仕組みが準備されていますので、今回はそちらも使っています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | app.py ... 起動ファイル | config.py ... 設定ファイル | api ├── __init__.py ... FlaskApp本体 │ ├── database.py ... DB情報 │ ├── models ... Model群 │ └── users.py │ └── views ... Controller群 └── user.py |
app.py
1 2 3 4 | from api import app if __name__ == '__main__': app.run() |
api/__init__.py
1 2 3 4 5 6 7 8 9 10 11 | from flask import Flask, make_response, jsonify from .views.user import user_router def create_app(): app = Flask(__name__) app.register_blueprint(user_router, url_prefix='/api') return app app = create_app() |
ルーティング
続いてルーティングですが記述としては下記のようにパスとHTTPメソッドを指定します。
api/views/user.py
1 2 3 4 5 6 7 8 9 | from flask import Blueprint, request, make_response, jsonify # ルーティング設定 user_router = Blueprint('user_router', __name__) # パスとHTTPメソッドを指定 @user_router.route('/users', methods=['GET']) def get_user_list(): 〜 処理 〜 |
レスポンス
json形式でレスポンスします。
api/views/user.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from flask import Blueprint, request, make_response, jsonify # ルーティング設定 user_router = Blueprint('user_router', __name__) # パスとHTTPメソッドを指定 @user_router.route('/users', methods=['GET']) def get_user_list(): return make_response(jsonify({ 'users': [ { 'id': 1, 'name': 'John' } ] })) |
確認
ここまで記述したら、実際にスクリプトを起動して動作確認してみてください。
1 | $ python app.py |
curlでリクエストを送って、下記のようにjsonが表示されたらOKです。
1 2 3 4 5 6 7 8 9 | $ curl http://127.0.0.1:5000/api/users { "user": [ { "id": 1, "name": "John" } ] } |
まとめ
いかがでしたか?こんな感じでFlaskを使って簡単にAPIのベースが作れました。
次回はDBと連携させるところを作る予定です
それでは、また次回!
Flask + MySQL + SQLAlchemyシリーズ
↓↓↓ぜひチェックしてください
~提供中のヒューマンセンシング技術~
◆人物検出技術
歩行者・来店者数計測やロボット搭載も
https://humandetect.pas-ta.io
◆視線検出技術
アイトラッキングや次世代UIに
https://eyetrack.pas-ta.io
◆生体判定技術
eKYC・顔認証のなりすまし対策を!
https://bio-check.pas-ta.io
◆目検出技術
あらゆる目周りデータを高精度に取得
https://pupil.pas-ta.io
◆音声感情認識技術
会話から怒りや喜びの感情を判定
https://feeling.pas-ta.io
◆虹彩認証技術
目の虹彩を利用した生体認証技術
https://iris.pas-ta.io