Slide 1

Slide 1 text

Fast API を用いた Web API の開発 ryounasso

Slide 2

Slide 2 text

API とは Application Programming Interface の略 開発者が複雑な機能をより簡単に作成できるように、プログラミング言語から提供 される構造。 複雑なコードを抽象化し、それに変わる簡潔な構文を提供する。 Web API の紹介 | mdn web docs https://developer.mozilla.org/ja/docs/Learn/JavaScript/Cl ient-side_web_APIs/Introduction クライアント サーバ Request page Request data Response

Slide 3

Slide 3 text

Fast API とは (公式ドキュメントより) FastAPI : https://fastapi.tiangolo.com/ Python の型ヒントに基づいて、API を構築するための、モダンで、高速な、 Web フレームワーク 主な特徴 - 高速 - 少ないバグ - 直感的 - 簡単 - 短い - 堅牢性 - Standards-based 個人的に - 簡単 - API ドキュメントの自動生成 - 型定義 (Pydantic)

Slide 4

Slide 4 text

環境構築はドキュメントがおすすめ fastapi pydantic uvicorn requests sqlalchemy aiomysql 公式ドキュメント https://fastapi.tiangolo.com/ja/tutorial/ Docker を使う場合 https://fastapi.tiangolo.com/ja/deployment/docker/ 使用するライブラリ

Slide 5

Slide 5 text

Hello World!! main.py

Slide 6

Slide 6 text

例) ToDo アプリ 今回は例として、タスクの追加、登録の流れを実装 データ構造は id, タスク名, DONE を持つ +-------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+---------------+------+-----+---------+----------------+ | id | int | NO | PRI | NULL | auto_increment | | name | varchar(1024) | YES | | NULL | | | done | tinyint(1) | YES | | NULL | | +-------+---------------+------+-----+---------+----------------+ app | – cruds/ | – models/ | – routers/ | – schemas/ | – main.py | – migrate_db.py

Slide 7

Slide 7 text

リクエストパスとパラメータを考える - タスクの追加 /tasks POST - タスクの取得 /tasks GET - URL はケバブケース - パラメータはキャメルケース - リソースの操作は HTTP メソッドで表現 - リソースに動詞を用いない - 非リソースには動詞を用いる リソース: データの一部 コレクション: リソースのグループ URL: リソースやコレクションの場所

Slide 8

Slide 8 text

レスポンスを考える - 理解しやすい命名にする - 深さ・プロパティ数に注意する

Slide 9

Slide 9 text

API 設計ツールを使用する “Open API Initiative” という団体が “OAS” という REST API 記述フォーマット を推進している メリット - API の開発効率の向上 - 広く受け入れられているため、様々なツールを使用できる - チーム内などで、共有しやすい Swagger : https://swagger.io/ api blueprint : https://apiblueprint.org/

Slide 10

Slide 10 text

FastAPI だと Swagger UI や ReDoc を用いてドキュメントを自動生成してくれる

Slide 11

Slide 11 text

FastAPI だと Swagger UI や ReDoc を用いてドキュメントを自動生成してくれる

Slide 12

Slide 12 text

タスクの追加を実装 - スキーマの作成 - DB の model を作成 - エンドポイントの作成 - DB への値の追加処理を作成

Slide 13

Slide 13 text

スキーマの作成

Slide 14

Slide 14 text

DB の model を作成 マイグレートも必要

Slide 15

Slide 15 text

エンドポイントの作成

Slide 16

Slide 16 text

DB への値の追加処理を作成 - DB モデルの TaskModel に変換 - DB にコミット - DB 上のデータをもとに task を更新

Slide 17

Slide 17 text

router で呼び出す

Slide 18

Slide 18 text

実装を確認 Swagger UI で簡単に確認が可能!

Slide 19

Slide 19 text

タスクの取得を実装 - スキーマの作成 - エンドポイントの作成 - DB への値の取得処理を作成

Slide 20

Slide 20 text

スキーマ / エンドポイントの作成

Slide 21

Slide 21 text

DB への値の取得処理を実装

Slide 22

Slide 22 text

実装を確認 Swagger UI で確認!

Slide 23

Slide 23 text

まとめ FastAPI を用いて Web API 開発の全体像をみた 簡単に早く Web API を実装することが可能 More - タスクを完了にするエンドポイントを作成 - エラーハンドリングを実装 - テストを実装

Slide 24

Slide 24 text

参考資料 - FastAPI https://fastapi.tiangolo.com/ - FastAPI 入門 | Zenn https://zenn.dev/sh0nk/books/537bb028709ab9

Slide 25

Slide 25 text

No content