Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Fast API を用いた Web API の開発
Search
ryounasso
January 19, 2024
Programming
650
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Fast API を用いた Web API の開発
初心者にも向ける勉強会 20 WEB バックエンドのお話し Python, PostgreSQL等 でお話しした内容です。
ryounasso
January 19, 2024
More Decks by ryounasso
See All by ryounasso
明日から始めるリファクタリング
ryounasso
0
300
駆け足で Google から学ぶテスト設計の指針
ryounasso
0
260
React inside basics: learn from “build own react"
ryounasso
0
250
抽象データ型について学んだ
ryounasso
0
500
開発効率向上のためのリファクタリングの一歩目の選択肢 ~コード分割~ / JJUG CCC 2024 Fall
ryounasso
0
4.4k
Clean Architecture by TypeScript & NestJS
ryounasso
0
1.2k
テストゼロの個人開発プロジェクトにテストを導入した話
ryounasso
0
530
簡易 DI コンテナを作って DI コンテナを知る
ryounasso
1
1.5k
TypeScript_コンパイラの内側に片足を入れる
ryounasso
3
1.1k
Other Decks in Programming
See All in Programming
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
400
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
380
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
290
Domain-Driven Transformation
hschwentner
2
2.3k
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
1.6k
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
28
33k
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
Railsバージョンを4倍にした話
optim
0
460
気持ちぃ〜角丸 Squircle
ryu1013
0
320
golang-bob.pdf
iwatsukayura
0
130
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
170
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
380
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
710
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
500
Automating Front-end Workflow
addyosmani
1369
210k
Fireside Chat
paigeccino
43
4.1k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
560
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Scaling GitHub
holman
464
140k
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