本当はGraphQLを使おうと思って勉強しようと思ったんですが、そもそもPythonですらまともに書いたことないのに、新しい物作めではじめたら死ぬな…とおもって、まずは素直にREST APIをシンプルに作ってました。
そのときに参考にした記事群を紹介。
とりあえず作ったAPIサーバーは以下を利用してます。(関連ものもありますが主だったものを)
- Flask
- flask_restful
- sqlalchemy
- marshmallow
Contents(目次)
Python自体の勉強
- Pythonを書き始める前に見るべきTips – Qiita
- Pythonの特徴を覚える為に。
Flask自体を勉強
Flask自体はいわゆるPythonでのマイクロフレームワーク。これを使っておけばまぁPythonのWebAppは十分。
- Quickstart — Flask Documentation (0.12.x)
- Flaskの簡単な使い方 – Qiita
- この記事が一番シンプルでわかりやすかったです。
- とりあえずお作法としての最低限のFlaskのセットアップはこれで理解。
- Flask導入〜Blueprint適用メモ – Qiita
- Blueprintはアプリケーションのエンドポイントプログラミング部分をファイル分割するために。
今回はこれじゃない方法利用したけど、普通に書くならこれですね。
- Blueprintはアプリケーションのエンドポイントプログラミング部分をファイル分割するために。
Flask のRESTful API作成関連
- Python Flaskを使ってREST APIを作成する – Sierエンジニアのブログ
- とりあえずGETしか作るつもり無かったけど、RESTfulにしておこうと参考に。flask_restfulが便利。
- Flask + SQLAlchemyプロジェクトを始める手順 – Qiita
- これでDB接続周りを勉強。ただこれSQLAlchemy.init_app()を使ってて接続どこでやってるのかわからなかった…。
- 【Python】Flask + MySQL + SQLAlchemyでAPIを開発してみよう Part1|blog(スワブロ) | スワローインキュベート
- これも参考に。
- 【Python】Flask で自作WEB APIにクエリパラメータを渡す – Qiita
- GETパラメーターどうやって受け取るんだ?と思って。
SQLAlchemy関連
- flask-SQLAlchemy で良く使うクエリーコマンド一覧
- 中身がDict型で帰ってきてしまうので、SQLAlchemyでall()とかでとってきたらdumpしてデバッグ確認したいときは”.__dict__”で
Marshmallow関連
Marshmallowはなんか色々できそうな気がするんですが…私の理解はSQLAlchemyでの戻り値が使いにくいので、JSON化するために利用。
作ってみた感想
- node.js触った時にも感じましたが、なんかアレですね…最近ものすごく機能がModule化してるので、例えばデータベースつなぐ1つとってもFlaskの上にSQLAlchemyでORMを積む…為の連携Moduleがあってそれは別で…みたいな感じになってるので、覚えることが数珠つなぎになりますね。
- とはいえ、Pythonはなんかあればpip -> importすればいいので楽だなとも思います。
- 最後これをWebに上げるところで結構躓いてました。というかHerokuとかGCPとかに乗せても良かったんですが、GCPにあげて動かしてみたら地味に結構お金食うし、私しか使わないから…と思って今回はレンタルサーバーで動かしてます。