🛣️ カテゴリルート
カテゴリルートは Express ミドルウェアではなく SDK コンポーザです。公開された参照は HTTP を使用します;変更操作には認証に続き、設定された管理者アイデンティティチェックが必要です。
インベントリ
| ルート | メソッド / プロトコル | パス | スキーマ | バリデータ | 成功ステータス |
|---|---|---|---|---|---|
createCategoryRoute | POST / HTTP | /categories | createCategorySchema | isAuthenticated()、checkIdentityType(['admin']) | 200 |
getCategoryRoute | GET / HTTP | /categories/:categoryId | getCategorySchema | doesCategoryExist | 200 |
findCategoriesRoute | GET / HTTP | /categories | findCategoriesSchema | なし | 200 |
updateCategoryRoute | PATCH / HTTP | /categories/:categoryId | updateCategorySchema | isAuthenticated()、checkIdentityType(['admin'])、doesCategoryExist | 200 |
deleteCategoryRoute | DELETE / HTTP | /categories/:categoryId | deleteCategorySchema | isAuthenticated()、checkIdentityType(['admin'])、doesCategoryExist | 204 |
enableCategoryRoute | POST / HTTP | /categories/:categoryId/enable | enableCategorySchema | isAuthenticated()、checkIdentityType(['admin'])、doesCategoryExist | 204 |
disableCategoryRoute | POST / HTTP | /categories/:categoryId/disable | disableCategorySchema | isAuthenticated()、checkIdentityType(['admin'])、doesCategoryExist | 204 |
詳細
createCategoryRoute
実装
エンドポイント: POST /categories
アクセス: 管理者;バリデータは isAuthenticated() 後に checkIdentityType(['admin']) を実行します。
リクエスト: 必須 application/json 作成ボディ、および設定された認証転送。
パイプライン: createCategory → getCategoryById → normalizeCategoryTerminator。
成功: _id 削除後の作成されたカテゴリとともに 200;サービスは通常の res.json(result) ブランチを使用します。
失敗: スキーマ/ボディエラーとハンドラの 400/500 エラー;認証/認可の失敗は バリデータ で文書されています。完全なソースを表示
getCategoryRoute
実装
エンドポイント: GET /categories/:categoryId
アクセス: 公開;直接 doesCategoryExist が最初に実行されます。
リクエスト: 取得スキーマ の必須文字列 categoryId パス値。
パイプライン: getCategoryById → normalizeCategoryTerminator。
成功: MongoDB _id なしで1件カテゴリとともに 200;サービスは通常の res.json(result) ブランチを使用します。
失敗: doesCategoryExist は欠損時に 404 を返します;捕捉されないデータベースの拒否はサービスにより 500 に変換されます。ルックアップはハンドラの 400、404、または 500 エラーも返す場合があります。完全なソースを表示
findCategoriesRoute
実装
エンドポイント: GET /categories
アクセス: 公開。
リクエスト: オプションの description、name、parent、status フィルターと page、limit を 検索スキーマ から取得します。ページネーションはページ 1 とリミット 10 にデフォルトされます。
パイプライン: withPagination(findCategories) → normalizeCategoriesListTerminator。
成功: サービスの通常の res.json(result) ブランチ経由で { data, metadata: { pagination } } とともに 200。data には _id なしカテゴリが含まれます;ページネーションには page、limit、total、totalPages、hasNext、hasPrev が含まれます。
失敗: データベースルックアップの失敗は 500 を返します。完全なソースを表示
updateCategoryRoute
実装
エンドポイント: PATCH /categories/:categoryId
アクセス: 管理者;バリデータは isAuthenticated()、checkIdentityType(['admin'])、doesCategoryExist を実行します。
リクエスト: categoryId、設定された認証転送、および 更新スキーマ からの必須 application/json 部分更新ボディ。
パイプライン: updateCategory → getCategoryById → normalizeCategoryTerminator。
成功: 更新後に取得された正規化されたカテゴリとともに 200;サービスは通常の res.json(result) ブランチを使用します。
失敗: 空/欠損ボディは 400;存在しないカテゴリは 404 で拒否されます;変更なしの更新は 400 です;バリデータ で共有アクセスの失敗を参照してください。完全なソースを表示
deleteCategoryRoute
実装
エンドポイント: DELETE /categories/:categoryId
アクセス: 管理者;isAuthenticated()、checkIdentityType(['admin'])、doesCategoryExist。
リクエスト: categoryId と設定された認証転送;削除スキーマ はボディを定義しません。
パイプライン: deleteCategory → deleteCategoryTerminator。
成功: 空の 204 レスポンス。
失敗: 存在しないカテゴリは 404;削除の失敗は 500;アクセスの失敗は バリデータ で説明されています。完全なソースを表示
enableCategoryRoute
実装
エンドポイント: POST /categories/:categoryId/enable
アクセス: 管理者;isAuthenticated()、checkIdentityType(['admin'])、doesCategoryExist。
リクエスト: categoryId と設定された認証転送;有効化スキーマ はボディを定義しません。
パイプライン: enableCategory → enableCategoryTerminator。
成功: status が 'active' に設定された後、空の 204 レスポンス。
失敗: 存在しないカテゴリは 404;変更なしの更新またはデータベースエラーは 500 です。完全なソースを表示
disableCategoryRoute
実装
エンドポイント: POST /categories/:categoryId/disable
アクセス: 管理者;isAuthenticated()、checkIdentityType(['admin'])、doesCategoryExist。
リクエスト: categoryId と設定された認証転送;無効化スキーマ はボディを定義しません。
パイプライン: disableCategory → disableCategoryTerminator。
成功: status が 'inactive' に設定された後、空の 204 レスポンス。
失敗: 存在しないカテゴリは 404;変更なしの更新またはデータベースエラーは 500 です。完全なソースを表示