開発中にフロントエンドからデータを取るにはどう書けばいいんだっけ?と悩むことはありませんか。
本記事ではサブスク管理人のAPI設計を紹介します。
APIの設計
AIと検討を重ねた結果、次のようなAPI設計となりました。
認証系
ユーザーの登録から退会までを管理するエンドポイントです。
メールアドレスとパスワードによる構成を採用しました。パスワードはハッシュ化してDBに保存してます。
| エンドポイント | 説明 | パラメータ |
|---|---|---|
| POST /auth/register | 新規ユーザー登録 | email, password |
| POST /auth/login | ログイン | email, password |
| POST /auth/guest | ゲストログイン | なし |
| DELETE /auth/account | アカウント退会 | なし |
サブスクリプション系
メイン機能であるサブスクリプション情報のCRUD操作です。登録と更新時にはバリデーションチェックを行います。
| エンドポイント | 説明 | 主なデータ項目 |
|---|---|---|
| GET /subscriptions | 登録済み一覧取得 | id, name, price, billing_cycle, next_billing_date |
| POST /subscriptions | 新規登録 | name, price, billing_cycle, next_billing_date |
| PUT /subscriptions/{id} | 情報の更新 | name, price, billing_cycle, next_billing_date |
| DELETE /subscriptions/{id} | データの削除 | id |
プリセット・システム系
利便性を高めるための補助的なエンドポイントです。
| エンドポイント | 説明 | 取得データ |
|---|---|---|
| GET /presets | プリセット情報取得 | name, price, billing_cycle, icon_url |
| GET /health | 死活監視 | status |
認証、セキュリティ
認証はBearer Authによるトークン認証を採用しています。
セッションはログイン成功時に発行されるアクセストークンをヘッダーに含めることで認証状態を維持する設計としています。
設計書の管理方法
APIの設計はOpenAPI形式で記述しopenapi.yamlファイルで管理しています。
設計をコード化したことで、AIがエンドポイントやデータ構造を正しく理解でき実装提案の質があがり、開発速度が向上しました。
サブスク管理人のAPIリファレンスは、下記ページから閲覧できます。
APIリファレンスの自動生成
APIリファレンスページはredoclyを利用することでファイルから自動で生成可能です。
npx @redocly/cli build-docs ./docs/openapi.yaml -o ./docs/index.html
上記コマンドで変換しています。
終わりに
API設計をファイル化し、AIと開発を進めてスピード感を持って開発できました。簡単なCRUD操作はもう人間が作ることはせず、全体設計やレビューに注力することが重要だと実感しました。
連載記事一覧
- サブスク管理人という個人サービスをリリースしました
- 【サブスク管理人】デザインシステムとUI実装
- 【サブスク管理人】データベースの設計
- 【サブスク管理人】APIの設計と開発←本記事
- 【サブスク管理人】サーバー構築とデプロイ(準備中)
- 【サブスク管理人】データ解析基盤の構築(準備中)