【要約】【TypeScript入門】自作APIを叩くHTTPクライアントをCLIで作ってみた ─ FastAPI連携・POST・エラーハンドリング [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
学習者がTypeScriptでのAPI開発において、通信境界の不備やエラー制御の難しさに直面した。具体的には以下の問題が発生した。
- ・POSTリクエスト時にContent-Typeヘッダーを欠落させ、FastAPIから422エラーを受けた。
- ・404エラー発生時に例外が適切に処理されず、CLIツール自体が異常終了した。
- ・エラー発生時にreturnを使用することで、異常終了の制御が困難になった。
// Approach
開発者は、サーバーとクライアントの両方を実装し、通信仕様とエラー設計を学んだ。以下の手法を採用した。
- ・FastAPIでPydanticを用いたDTO(Item/ItemCreate)を定義し、責務を明確化した。
- ・TypeScript側でfetch APIを使用し、POST時にContent-Type: application/jsonを明示的に指定した。
- ・try-catchをswitch文の各case内に配置し、404等の想定内エラーではループを継続する設計とした。
- ・Jestを用いて、fetchのモックによる成功系・失敗系のテストを実施した。
// Result
APIの通信仕様と、例外処理の配置がユーザー体験に与える影響を理解した。具体的な成果は以下の通りである。
- ・Content-Typeの指定により、POSTリクエストにおける422エラーを解消した。
- ・例外の適切なキャッチと再スローにより、CLIの継続と異常終了を制御可能にした。
- ・DTOの分離により、クライアントから不要なフィールド(id等)を送らせない設計を実現した。
Senior Engineer Insight
> DTOの分離(Item vs ItemCreate)は、APIのセキュリティと整合性を保つ上で不可欠な設計思想である。また、エラーハンドリングにおける「どこでcatchするか」の議論は、分散システムにおける障害伝播の制御に通じる。実戦では、こうした境界条件での型定義の同期と、エラーの再スロー戦略が、システムの可用性とデバッグ容易性を左右する。