📦 商品ルートブロック
商品ルートブロックは、Nodeblocksアプリケーションにおける商品管理操作のための事前設定されたHTTPエンドポイントを提供します。これらのルートは、ハンドラー、バリデーター、ミドルウェアを組み合わせて、適切な認証、認可、エラー処理を備えた完全なAPIエンドポイントを作成します。
🎯 概要
商品ルートブロックは以下を目的として設計されています:
- 商品管理操作のための完全なAPIエンドポイントの提供
- 安全な操作のためのハンドラーとバリデーターの組み合わせ
- 認証と認可チェックの包含
- 関数コンポジションパターンのサポート
- ログとエラー管理の自動処理
📋 ルート構造
各商品ルートは一貫したパターンに従います:
- HTTPメソッド: 操作タイプを定義(GET、POST、PATCH、DELETE)
- パス: パラメータを含むエンドポイントURLを指定
- ハンドラー: ビジネスロジック用のコンポーズされた関数チェーン
- バリデーター: 認証と認可のチェック
🔧 利用可能な商品ルート
createProductRoute
新しい商品を作成し、作成されたリソースを返します。
目的: 完全なリソース取得による商品作成を処理
ルート詳細:
- メソッド:
POST
- パス:
/products
- 認証: 必須(Bearerトークン)
ハンドラー: createProduct
, getProductById
, normalizeProductTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateResourceAccess
(['admin'], getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.createProductRoute);
findProductsRoute
正規化されたリストフォーマットですべての商品を取得します。
目的: ページネーションによる商品リスト
ルート詳細:
- メソッド:
GET
- パス:
/products
- 認証: 不要
ハンドラー: findProducts
, normalizeProductsListTerminator
バリデーター: なし
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.findProductsRoute);
getProductRoute
IDで特定の商品を取得します。
目的: 商品データの取得
ルート詳細:
- メソッド:
GET
- パス:
/products/:productId
- 認証: 不要
ハンドラー: getProductById
, normalizeProductTerminator
バリデーター: なし
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.getProductRoute);
updateProductRoute
既存の商品を更新し、更新されたリソースを返します。
目的: アクセス制御による商品データの変更
ルート詳細:
- メソッド:
PATCH
- パス:
/products/:productId
- 認証: 必須(Bearerトークン)
ハンドラー: updateProduct
, getProductById
, normalizeProductTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateResourceAccess
(['admin'], getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.updateProductRoute);
deleteProductRoute
IDで商品を削除します。
目的: アクセス制御による商品の削除
ルート詳細:
- メソッド:
DELETE
- パス:
/products/:productId
- 認証: 必須(Bearerトークン)
ハンドラー: deleteProduct
, deleteProductTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateResourceAccess
(['admin'], getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.deleteProductRoute);
📦 バッチ操作ルート
createProductBatchRoute
バッチで複数の商品を作成し、作成されたリソースを返します。
目的: バッチ商品作成を処理
ルート詳細:
- メソッド:
POST
- パス:
/products/batch
- 認証: 必須(Bearerトークン)
ハンドラー: createProductBatch
, getProductsByIds
, normalizeProductsListTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateResourceAccess
(['admin'], getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.createProductBatchRoute);
updateProductBatchRoute
バッチで複数の商品を更新し、更新されたリソースを返します。
目的: バッチ商品更新を処理
ルート詳細:
- メソッド:
PATCH
- パス:
/products/batch
- 認証: 必須(Bearerトークン)
ハンドラー: updateProductBatch
, getProductsByIds
, normalizeProductsListTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateResourceAccess
(['admin'], getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.updateProductBatchRoute);
deleteProductBatchRoute
バッチで複数の商品を削除します。
目的: バッチ商品削除を処理
ルート詳細:
- メソッド:
DELETE
- パス:
/products/batch
- 認証: 必須(Bearerトークン)
ハンドラー: deleteProductBatch
, deleteBatchProductsTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateResourceAccess
(['admin'], getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.deleteProductBatchRoute);
copyProductRoute
既存の商品のコピーを作成します。
目的: 商品複製とバリエーション作成
ルート詳細:
- メソッド:
POST
- パス:
/products/:productId/copy
- 認証: 必須(Bearerトークン)
ハンドラー: copyProduct
, getProductById
, normalizeProductTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateResourceAccess
(['admin'], getBearerTokenInfo)
copyProductBatchRoute
バッチで複数の商品のコピーを作成します。
目的: バッチ商品コピーを処理
ルート詳細:
- メソッド:
POST
- パス:
/products/batch/copy
- 認証: 必須(Bearerトークン)
ハンドラー: copyProductBatch
, getProductsByIds
, normalizeProductsListTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateResourceAccess
(['admin'], getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.copyProductBatchRoute);
📋 ルートパターン
認証要件
管理操作(作成、更新、削除)は有効なBearerトークンによる認証が必要です。読み取り操作(取得、検索)は認証不要です。
アクセス制御
商品ルートは以下のアクセスレベルをサポートします:
- admin: 管理者レベルアクセス(すべての操作)
- public: パブリックアクセス(読み取り専用)
エラー処理
すべてのルートには自動エラー処理とログが含まれています。
🔗 関連ドキュメント
- 商品ハンドラーブロック - 商品ビジネスロジック関数
- 商品スキーマブロック - 商品データ検証と契約
- 商品フィーチャーブロック - 商品コンポーズ機能