📦 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);