Deep Ping
メソッド
REST メソッドを採用しています。
HTTP メソッド
GET: データベース接続のヘルスチェック
命名規則
クエリパラメータとノードの命名を統一し、可読性を向上させるため、リクエスト時の URI と JSON 内のノードには snake_case を使用します。
リクエストとレスポンス
ヘッダー
メタ情報はレスポンスボディではなく、HTTP ヘッダーに設定されます。
リクエストヘッダー
リクエストヘッダーは不要です。
レスポンスヘッダー
Content-Type:application/json
Deep Ping
URI
レスポンス(200 OK)
レスポンスは JSON です。
認証要件
このエンドポイントは認証を要求しません。
例外処理
例外時のステータスコードは次のとおりです。
| 説明 | ステータスコード | ステータス名 |
|---|---|---|
| サーバ内部エラー | 500 | Internal Server Error |
処理フロー
シーケンス図
sequenceDiagram
participant Client
participant API as Hono Router
participant Service as Ping Service
participant Repo as Ping Repository
participant DB as PostgreSQL Database
Client->>API: GET /api/v1/ping/deep
API->>Service: pingDeep()
Service->>Repo: pingDeep()
Repo->>DB: SELECT 1
alt Database Connected
DB-->>Repo: Query result
Repo-->>Service: "deep ping"
Service-->>API: "deep ping"
API-->>Client: 200 OK { "message": "deep ping" }
else Database Error
DB-->>Repo: Connection error
Repo-->>Service: throw Error
Service-->>API: throw Error
API-->>Client: 500 Internal Server Error
end
Routes 層
ルーティングはここで行います。ハンドラは ping サービスに委譲し、結果を JSON で返します。
ソース: apps/admin/src/routes/v1/ping.ts
Services 層
ビジネスロジックの説明です。リポジトリを呼び出してデータベース接続を確認し、結果メッセージを返します。
ソース: apps/admin/src/services/ping.ts
Repositories 層
データベースへのアクセスです。軽量の SELECT 1 で接続を確認します。成功時は "deep ping" を返し、失敗時はエラーをログに記録して例外を送出します。
ソース: apps/admin/src/repositories/ping.ts
セキュリティ
- ヘルスチェック用のため認証は不要です
- レスポンスに機密情報は含まれません
- データベースエラーはコンテキスト付きでログに記録されますが、クライアントには露出しません
- レディネスプローブやデプロイ検証に適しています