Open3
API設計

API設計
方針
-
明確性と一貫性
- 予測可能な動作、エラー、レスポンスのパターンを同じに
-
拡張性
- 柔軟なクエリ
- ページネーションなど
- 柔軟なクエリ
-
セキュリティ
- 認証・認可
- サニタイズ
- SQLインジェクションやXSS (クロスサイトスクリプティング) などの脆弱性から保護するため、すべての入力値を適切にサニタイズ
-
パフォーマンス
- レスポンス速度
- 100ミリ秒 (0.1秒) 以下:
- 理想的
- 100ミリ秒 ~ 300ミリ秒 (0.1秒 ~ 0.3秒):
- 非常に良い: ユーザーはわずかな遅延を感じるかもしれませんが、操作の流れを妨げられることはほとんどありません
- 300ミリ秒 ~ 1秒 (0.3秒 ~ 1秒):
- 許容範囲: ユーザーは明確に遅延を感じ、イライラし始める可能性があります
- Googleの調査などでは、読み込みに3秒以上かかるとユーザーの53%が離脱するというデータ
- 許容範囲: ユーザーは明確に遅延を感じ、イライラし始める可能性があります
- 3秒以上
- 危険領域
- バックグラウンドの場合
- 1~5秒は許容
- 数十秒以上はNG
- 100ミリ秒 (0.1秒) 以下:
- キャッシュ
- レートリミット
- リクエスト条件
- レスポンス速度

基本機能
-
認証
- ヘッダー認証
- Authorization
- APIキー, JWT,Oauthトークン
- Authorization
- クッキー認証 (Cookie-based Authentication)
- 自動的に付与してくれるのは良いよね
- ヘッダー認証
-
レスポンス
- ステータスコード
- レスポンスボディ
- 正常系: データ構造
- 異常系:
- エラーコード
- エラーメッセージ
- アプリケーションエラー
-
ログの吐き出し・通知(slack)
- logger zerologなどで
-
計測
- newrelicなどで
-
レスポンスボディ
- エラーの場合
// エラーレスポンスボディの例
{
"code": "INVALID_INPUT",
"message": "The provided email address is invalid.",
"details": {
"field": "email",
"value": "invalid-email"
}
}