Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Fast API を用いた Web API の開発
Search
ryounasso
January 19, 2024
Programming
1
380
Fast API を用いた Web API の開発
初心者にも向ける勉強会 20 WEB バックエンドのお話し Python, PostgreSQL等 でお話しした内容です。
ryounasso
January 19, 2024
Tweet
Share
More Decks by ryounasso
See All by ryounasso
Clean Architecture by TypeScript & NestJS
ryounasso
0
330
テストゼロの個人開発プロジェクトにテストを導入した話
ryounasso
0
270
簡易 DI コンテナを作って DI コンテナを知る
ryounasso
1
730
TypeScript_コンパイラの内側に片足を入れる
ryounasso
3
590
kintone新機能開発のお仕事
ryounasso
2
88
Other Decks in Programming
See All in Programming
Progressive Web Apps for Rails developers
siaw23
2
530
[KR] Server Driven Compose With Firebase
skydoves
2
160
ROS 2のZenoh対応とZenohのROS 2対応
takasehideki
2
260
AWS Lambda Web Adapterを活用する新しいサーバーレスの実装パターン
tmokmss
6
5.7k
Micro Frontends for Java Microservices - dev2next 2024
mraible
PRO
0
190
実践Dash - 手を抜きながら本気で作るデータApplicationの基本と応用 / Dash for Python and Baseball
shinyorke
2
230
Cloud Adoption Framework にみる組織とクラウド導入戦略
tomokusaba
2
320
ACES Meet におけるリリース作業改善の取り組み
fukucheee
0
120
Pythonによるイベントソーシングへの挑戦と現状に対する考察 / Challenging Event Sourcing with Python and Reflections on the Current State
nrslib
3
910
CDKを活用した 大規模コンテナ移行 プロジェクトの紹介
yoyoyopg
0
240
学生の時に開催したPerl入学式をきっかけにエンジニアが組織に馴染むために勉強会を主催や仲間と参加して職能間の境界を越えていく
ohmori_yusuke
1
120
GitHub Copilot Workspace で我々のアプリ開発がどう変わるのか?
shuyakinjo
0
860
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
425
64k
Large-scale JavaScript Application Architecture
addyosmani
509
110k
Six Lessons from altMBA
skipperchong
26
3.4k
Building a Scalable Design System with Sketch
lauravandoore
459
32k
YesSQL, Process and Tooling at Scale
rocio
167
14k
Adopting Sorbet at Scale
ufuk
73
8.9k
What's in a price? How to price your products and services
michaelherold
243
11k
Pencils Down: Stop Designing & Start Developing
hursman
119
11k
Practical Orchestrator
shlominoach
185
10k
A Tale of Four Properties
chriscoyier
155
22k
The Cost Of JavaScript in 2023
addyosmani
43
5.8k
Designing with Data
zakiwarfel
98
5.1k
Transcript
Fast API を用いた Web API の開発 ryounasso
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
Fast API とは (公式ドキュメントより) FastAPI : https://fastapi.tiangolo.com/ Python の型ヒントに基づいて、API を構築するための、モダンで、高速な、
Web フレームワーク 主な特徴 - 高速 - 少ないバグ - 直感的 - 簡単 - 短い - 堅牢性 - Standards-based 個人的に - 簡単 - API ドキュメントの自動生成 - 型定義 (Pydantic)
環境構築はドキュメントがおすすめ fastapi pydantic uvicorn requests sqlalchemy aiomysql 公式ドキュメント https://fastapi.tiangolo.com/ja/tutorial/ Docker
を使う場合 https://fastapi.tiangolo.com/ja/deployment/docker/ 使用するライブラリ
Hello World!! main.py
例) 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
リクエストパスとパラメータを考える - タスクの追加 /tasks POST - タスクの取得 /tasks GET - URL はケバブケース - パラメータはキャメルケース
- リソースの操作は HTTP メソッドで表現 - リソースに動詞を用いない - 非リソースには動詞を用いる リソース: データの一部 コレクション: リソースのグループ URL: リソースやコレクションの場所
レスポンスを考える - 理解しやすい命名にする - 深さ・プロパティ数に注意する
API 設計ツールを使用する “Open API Initiative” という団体が “OAS” という REST API
記述フォーマット を推進している メリット - API の開発効率の向上 - 広く受け入れられているため、様々なツールを使用できる - チーム内などで、共有しやすい Swagger : https://swagger.io/ api blueprint : https://apiblueprint.org/
FastAPI だと Swagger UI や ReDoc を用いてドキュメントを自動生成してくれる
FastAPI だと Swagger UI や ReDoc を用いてドキュメントを自動生成してくれる
タスクの追加を実装 - スキーマの作成 - DB の model を作成 - エンドポイントの作成
- DB への値の追加処理を作成
スキーマの作成
DB の model を作成 マイグレートも必要
エンドポイントの作成
DB への値の追加処理を作成 - DB モデルの TaskModel に変換 - DB にコミット
- DB 上のデータをもとに task を更新
router で呼び出す
実装を確認 Swagger UI で簡単に確認が可能!
タスクの取得を実装 - スキーマの作成 - エンドポイントの作成 - DB への値の取得処理を作成
スキーマ / エンドポイントの作成
DB への値の取得処理を実装
実装を確認 Swagger UI で確認!
まとめ FastAPI を用いて Web API 開発の全体像をみた 簡単に早く Web API を実装することが可能
More - タスクを完了にするエンドポイントを作成 - エラーハンドリングを実装 - テストを実装
参考資料 - FastAPI https://fastapi.tiangolo.com/ - FastAPI 入門 | Zenn https://zenn.dev/sh0nk/books/537bb028709ab9
None