📦 Product ルートブロック
Product ルートブロックは、Nodeblocks アプリケーションにおける製品管理操作のための事前設定された HTTP エンドポイントを提供します。これらのルートは、ハンドラー、バリデーター、ミドルウェアを組み合わせて、適切な認証、認可、エラーハンドリングを含む完全な API エンドポイントを作成します。
🎯 概要
Product ルートブロックは以下を目的として設計されています:
- 製品管理操作のための完全な API エンドポイントを提供
- セキュアな操作のためにハンドラーとバリデーターを組み合わせる
- 認証と認可チェックを含む
- 関数型コンポジションのパターンをサポート
- ログとエラーの管理を自動的に処理
📋 ルート構造
各 Product ルートは一貫したパターンをたどります:
- HTTP メソッド: 操作タイプを定義 (GET, POST, PATCH, DELETE)
- パス: パラメータ付きのエンドポイント URL を指定
- ハンドラー: ビジネスロジックのための合成関数チェーン
- バリデーター: 認証と認可チェック
🔧 利用可能な Product ルート
createProductRoute
新しい製品を作成し、作成されたリソースを返します。
目的: 完全なリソース取得付きで製品作成を処理
ルート詳細:
- メソッド:
POST - パス:
/products - 認証: 必須 (Bearer トークン)
ハンドラー: createProduct, getProductById, normalizeProductTerminator
バリデーター: isAuthenticated, checkIdentityType(['admin'])
使用法:
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);
createProductBatchRoute
バッチで複数の製品を作成し、作成されたリソースを返します。
目的: バッチ製品作成を処理
ルート詳細:
- メソッド:
POST - パス:
/products/batch - 認証: 必須 (Bearer トークン)
ハンドラー: createProductBatch, getProductsByIds, normalizeProductsListTerminator
バリデーター: isAuthenticated, checkIdentityType(['admin'])
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリでルートを登録
app.use('/api', routes.createProductBatchRoute);
updateProductBatchRoute
バッチで複数の製品を更新し、更新されたリソースを返します。
目的: バッチ製品更新を処理
ルート詳細:
- メソッド:
PATCH - パス:
/products/batch - 認証: 必須 (Bearer トークン)
ハンドラー: updateProductBatch, getProductsByIds, normalizeProductsListTerminator
バリデーター: isAuthenticated, checkIdentityType(['admin'])
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリでルートを登録
app.use('/api', routes.updateProductBatchRoute);
deleteProductBatchRoute
バッチで複数の製品を削除します。
目的: バッチ製品削除を処理
ルート詳細:
- メソッド:
DELETE - パス:
/products/batch - 認証: 必須 (Bearer トークン)
ハンドラー: deleteProductBatch, deleteBatchProductsTerminator
バリデーター: isAuthenticated, checkIdentityType(['admin'])
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリでルートを登録
app.use('/api', routes.deleteProductBatchRoute);
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
バリデーター: isAuthenticated, checkIdentityType(['admin'])
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリでルートを登録
app.use('/api', routes.updateProductRoute);
deleteProductRoute
ID によって製品を削除します。
目的: アクセスコントロール付きで製品を削除
ルート詳細:
- メソッド:
DELETE - パス:
/products/:productId - 認証: 必須 (Bearer トークン)
ハンドラー: deleteProduct, deleteProductTerminator
バリデーター: isAuthenticated, checkIdentityType(['admin'])
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリでルートを登録
app.use('/api', routes.deleteProductRoute);
copyProductRoute
既存の製品のコピーを作成します。
目的: アクセスコントロール付きで製品を複製
ルート詳細:
- メソッド:
POST - パス:
/products/:productId/copy - 認証: 必須 (Bearer トークン)
ハンドラー: copyProduct, getProductById, normalizeProductTerminator
バリデーター: isAuthenticated, checkIdentityType(['admin'])
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリでルートを登録
app.use('/api', routes.copyProductRoute);
copyProductBatchRoute
バッチで複数の製品のコピーを作成します。
目的: バッチ製品コピーを処理
ルート詳細:
- メソッド:
POST - パス:
/products/batch/copy - 認証: 必須 (Bearer トークン)
ハンドラー: copyProductBatch, getProductsByIds, normalizeProductsListTerminator
バリデーター: isAuthenticated, checkIdentityType(['admin'])
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリでルートを登録
app.use('/api', routes.copyProductBatchRoute);
getProductImageUploadUrlRoute
GET /products/:productId/image-upload-url を介して製品画像をアップロードするための署名付き URL を生成します。
目的: セキュアな製品画像アップロードのための事前署名付き URL を発行
ルート詳細:
- メソッド:
GET - パス:
/products/:productId/image-upload-url - 認証: 必須 (Bearer トークン)
ブロック: generateProductImageUploadUrl
ターミネーター: orThrow 経由の組み込み成功/エラー マッピング
バリデーター: isAuthenticated, checkIdentityType(['admin'])
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリでルートを登録
app.use('/api', routes.getProductImageUploadUrlRoute);