🛣️ ロケーションルート
ロケーションルートは、NodeBlocksアプリケーションでロケーション管理操作用の事前設定されたHTTPエンドポイントを提供します。これらのルートは、ブロック、バリデーター、ミドルウェアを組み合わせて、適切な認証、認可、エラーハンドリングを含む完全なAPIエンドポイントを作成します。
🎯 概要
ロケーションルートは以下の目的で設計されています:
- ロケーション管理操作用の完全なAPIエンドポイントを提供します
- セキュアな操作のためにブロックとバリデーターを組み合わせます
- 認証と認可チェックを含みます
- 関数合成パターンをサポートします
- ロギングとエラー管理を自動的に処理します
- 親子と祖先追跡を含む階層関係をサポートします
📋 ルート構造
各ロケーションルートは一貫したパターンに従います:
- HTTPメソッド: 操作タイプを定義(GET、POST、PATCH、DELETE)
- パス: パラメータを含むエンドポイントURLを指定
- ハンドラー: ビジネスロジック用の合成関数チェーン
- バリデーター: 認証と認可チェック
🔧 利用可能なロケーションルート
createLocationRoute
親階層サポートと祖先構築を含むPOST /locationsで新しいロケーションを作成します。
目的: 親ロケーションバリデーションと祖先チェーン構築を含む自動階層関係管理を含むロケーション作成リクエストを処理します。
ルート詳細:
- Method:
POST - Path:
/locations - 認証: 必須(Bearerトークン)
ブロック: buildAncestorsFromParent, buildLocationToCreate, getLocationById, createLocation
バリデーター: isAuthenticated, checkIdentityType(['admin'])
使用例:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.createLocationRoute);
getLocationRoute
パブリックアクセスを含むGET /locations/:locationIdでIDによる特定のロケーションを取得します。
目的: IDによる特定のロケーション検索のための適切なバリデーションとエラーハンドリングを含むロケーションデータ取得へのパブリックアクセスを提供します。
ルート詳細:
- Method:
GET - Path:
/locations/:locationId - 認証: 不要(パブリックアクセス)
ブロック: getLocationById
バリデーター: なし(パブリックアクセス)
使用例:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.getLocationRoute);
updateLocationRoute
管理者認証を含むPATCH /locations/:locationIdで既存のロケーションを更新します。
目的: 部分的なフィールド変更、適切なバリデーション、更新されたロケーションデータを含むレスポンスを含むロケーション更新リクエストを処理します。
ルート詳細:
- Method:
PATCH - Path:
/locations/:locationId - 認証: 必須(Bearerトークン)
ブロック: updateLocation, getLocationById
バリデーター: isAuthenticated, checkIdentityType(['admin'])
使用例:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.updateLocationRoute);
deleteLocationRoute
管理者認証を含むDELETE /locations/:locationIdでロケーションとその子孫を削除します。
目的: 孤立した子ロケーションを防ぎ、ロケーション階層構造のデータ整合性を確保するための包括的な子孫バリデーションを含むロケーション削除リクエストを処理します。
ルート詳細:
- Method:
DELETE - Path:
/locations/:locationId - 認証: 必須(Bearerトークン)
ブロック: buildDescendantsFilter, findLocations, assertNoDescendantLocations, deleteLocation
バリデーター: isAuthenticated, checkIdentityType(['admin'])
使用例:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.deleteLocationRoute);
findLocationsRoute
パブリックアクセスを含むGET /locationsでページネーションとフィルタリングを使用してロケーションを取得します。
目的: ページネーションサポートを含むロケーション検索およびリスト表示のパブリックエンドポイントを提供し、ロケーションデータの効率的な閲覧とフィルタリングを可能にします。
ルート詳細:
- Method:
GET - Path:
/locations - 認証: 不要(パブリックアクセス)
ブロック: findLocations, withPagination (built-in pagination wrapper)
バリデーター: なし(パブリックアクセス)
使用例:
import { routes } from '@nodeblocks/backend-sdk';
// Register route with Express app
app.use('/api', routes.findLocationsRoute);
🔗 関連ドキュメント
- ロケーションスキーマ - ロケーションデータバリデーションとコントラクト
- ロケーションブロック - ロケーションビジネスロジック関数