メインコンテンツまでスキップ
バージョン: 0.5.0 (最新)

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