🥑
FastAPI を利用してAPIサーバを作る1 - 前提知識編-
こんにちは、某WEB自社開発企業でエンジニアとして働いているshimosawaと申します。
この記事では自社サービスである某ECサイトをPHP(EC-CUBE)からFastAPI(フロントはNext.jsへ順次以降予定)へ、リプレイスを行うプロジェクトを行っている中で経験した、検討ポイントや実際の構築方法など書き残していければと思います。
想定読者
- FastAPIをこれから学びたい方
- 業務でAPIサーバの立ち上げが必要となり、技術選定が必要な方
- APIサーバの開発に興味がある方
- サンプルコードなど具体的な内容を見ながら開発の進め方を知りたい方
そもそもFastAPIとは?
FastAPI(ファストえーぴーあい)とはPythonでWebアプリ開発やAPI開発をする際に利用するWebフレームワークです。
公式ドキュメントが日本語で提供されており、フレームワーク開発初学者でも開発しやすいのが特徴です。
FastAPIの良いところ
- APIドキュメントが自動生成されるのでAPI仕様書作成が簡易
- 軽量で処理が速い
- 簡単にサーバーを立ち上げられる
- 非同期処理に強い
FastAPIの悪いところ
- 公式ドキュメントは日本語で用意されているが、歴史が浅いフレームワークのためZennやQiitaなどの記事数が少なく、バグ解決の際には基本的に海外サイト頼り
- フレームワークとしてデフォルトで備えている機能が少なくライブラリを導入する必要がある
今回作成する開発環境の概要
- Dockerイメージ:tiangolo/uvicorn-gunicorn-fastapi:python3.8(https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker)
- パッケージ管理:poetry(https://cocoatomo.github.io/poetry-ja/)
- 拡張ツール
名称 | 説明 |
---|---|
black | Python用の自動フォーマッタ。シングルクォートとダブルクォートの統一、末尾カンマの統一、余計な丸括弧の削除、数値リテラルの書き方統一など、コーディング規約の統一が可能 |
debugpy | VScodeでPythonプログラムをデバッグ可能なライブラリ |
sqlalchemy | ORMでDB操作ができるようにするライブラリ |
aiomysql | 非同期処理(acyncio)においてMySQL・MariaDBにアクセスするためのPythonライブラリ |
mysqlclient | MySQL・MariaDBに接続するためのPythonライブラリ |
Discussion