メインコンテンツまでスキップ
バージョン: 0.4.2

📦 商品ルートブロック

商品ルートブロックは、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: パブリックアクセス(読み取り専用)

エラー処理

すべてのルートには自動エラー処理とログが含まれています。


🔗 関連ドキュメント