💬 Chat ルートブロック
Chat ルートブロックは、NodeBlocks アプリケーションにおけるチャット管理操作のための事前構成済み HTTP エンドポイントを提供します。これらのルートは、ハンドラー、検証子、ミドルウェアを組み合わせて、適切な認証、認可、エラーハンドリングを使用した完全な API エンドポイントを作成します。
🎯 概要
Chat ルートブロックは以下を目的として設計されています:
- チャット管理操作のための完全な API エンドポイントを提供する
- 安全な操作のためにハンドラーを検証と組み合わせる
- 認証および認可チェックを含む
- 関数型合成パターンをサポートする
- ログ記録とエラー管理を自動的に処理する
📋 Route Structure
各チャットルートは一貫したパターンを遵循します:
- HTTP Method: 操作タイプを定義(GET, POST, PATCH, DELETE)
- Path: パラメーター付きのエンドポイント URL を指定
- Handler: ビジネスロジックのための構成された関数チェーン
- Validators: 認証および認可チェック
🔧 利用可能なチャットルート
チャンネルルート
createChatChannelRoute
新しいチャンネルを作成し、作成されたリソースを返します。
目的: 完全なリソース取得を使用してチャンネル作成を処理します
Route Details:
- Method:
POST
- Path:
/channels
- 認証: 必須(Bearer トークン)
Handlers: createChatChannel
, getChatChannelById
, createChatChannelTerminator
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), isSelf
(['params', 'requestBody', 'ownerId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.createChatChannelRoute);
findChatChannelsRoute
正規化されたリスト形式ですべてのチャンネルを取得します。
目的: ページネーションを使用してチャンネルをリストします
Route Details:
- Method:
GET
- Path:
/channels
- 認証: 必須(Bearer トークン)
Handlers: findChatChannels
, normalizeChatChannelsListTerminator
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), isSelf
(['params', 'requestQuery', 'ownerId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.findChatChannelsRoute);
getChatChannelRoute
ID で特定のチャンネルを取得します。
目的: チャンネルデータを取得します
Route Details:
- Method:
GET
- Path:
/channels/:channelId
- 認証: 必須(Bearer トークン)
Handlers: getChatChannelById
, normalizeChatChannelTerminator
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), ownsChannel
(['params', 'requestParams', 'channelId']), hasSubscription
(['params', 'requestParams', 'channelId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.getChatChannelRoute);
updateChatChannelRoute
既存のチャンネルを更新し、更新されたリソースを返します。
目的: アクセス制御を使用してチャンネルデータを変更します
Route Details:
- Method:
PATCH
- Path:
/channels/:channelId
- 認証: 必須(Bearer トークン)
Handlers: updateChatChannel
, getChatChannelById
, normalizeChatChannelTerminator
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), ownsChannel
(['params', 'requestParams', 'channelId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.updateChatChannelRoute);
deleteChatChannelRoute
ID でチャンネルを削除します。
目的: アクセス制御を使用してチャンネルを削除します
Route Details:
- Method:
DELETE
- Path:
/channels/:channelId
- 認証: 必須(Bearer トークン)
Handlers: deleteChatChannel
, deleteChatChannelTerminator
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), ownsChannel
(['params', 'requestParams', 'channelId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.deleteChatChannelRoute);
サブスクリプションルート
createChatSubscriptionRoute
新しいサブスクリプションを作成し、作成されたリソースを返します。
目的: 完全なリソース取得を使用してサブスクリプション作成を処理します
Route Details:
- Method:
POST
- Path:
/subscriptions
- 認証: 必須(Bearer トークン)
Handlers: createChatSubscription
, getChatSubscriptionById
, createChatSubscriptionTerminator
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), isSelf
(['params', 'requestBody', 'subscribedId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.createChatSubscriptionRoute);
findChatSubscriptionsRoute
正規化されたリスト形式ですべてのサブスクリプションを取得します。
目的: ページネーションを使用してサブスクリプションをリストします
Route Details:
- Method:
GET
- Path:
/subscriptions
- 認証: 必須(Bearer トークン)
Handlers: findChatSubscriptions
, normalizeChatSubscriptionsListTerminator
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), hasSubscription
(['params', 'requestQuery', 'channelId']), ownsChannel
(['params', 'requestQuery', 'channelId']), isSelf
(['params', 'requestQuery', 'subscribedId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.findChatSubscriptionsRoute);
getChatSubscriptionRoute
ID で特定のサブスクリプションを取得します。
目的: サブスクリプションデータを取得します
Route Details:
- Method:
GET
- Path:
/subscriptions/:subscriptionId
- 認証: 必須(Bearer トークン)
Handlers: getChatSubscriptionById
, normalizeChatSubscriptionTerminator
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), ownsSubscription
(['params', 'requestParams', 'subscriptionId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.getChatSubscriptionRoute);
deleteChatSubscriptionRoute
ID でサブスクリプションを削除します。
目的: サブスクリプションを削除します
Route Details:
- Method:
DELETE
- Path:
/subscriptions/:subscriptionId
- 認証: 必須(Bearer トークン)
Handlers: deleteChatSubscription
, deleteChatSubscriptionTerminator
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), ownsSubscription
(['params', 'requestParams', 'subscriptionId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.deleteChatSubscriptionRoute);
メッセージルート
createChatMessageRoute
新しいメッセージを作成し、作成されたリソースを返します。
目的: 完全なリソース取得を使用してメッセージ作成を処理します
Route Details:
- Method:
POST
- Path:
/messages
- 認証: 必須(Bearer トークン)
Handlers: createChatMessage
, getChatMessageById
, createChatMessageTerminator
Validators: isAuthenticated
, isSelf
(['params', 'requestBody', 'senderId']), hasSubscription
(['params', 'requestBody', 'channelId'])
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.createChatMessageRoute);
findChatMessagesRoute
正規化されたリスト形式ですべてのメッセージを取得します。
目的: ページネーションを使用してメッセージをリストします
Route Details:
- Method:
GET
- Path:
/messages
- 認証: 必須(Bearer トークン)
Handlers: findChatMessages
, normalizeChatMessagesListTerminator
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), hasSubscription
(['params', 'requestQuery', 'channelId']), isSelf
(['params', 'requestQuery', 'senderId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.findChatMessagesRoute);
getChatMessageRoute
ID で特定のメッセージを取得します。
目的: メッセージデータを取得します
Route Details:
- Method:
GET
- Path:
/messages/:messageId
- 認証: 必須(Bearer トークン)
Handlers: getChatMessageById
, normalizeChatMessageTerminator
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), ownsMessage
(['params', 'requestParams', 'messageId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.getChatMessageRoute);
updateChatMessageRoute
既存のメッセージを更新し、更新されたリソースを返します。
目的: アクセス制御を使用してメッセージデータを変更します
Route Details:
- Method:
PATCH
- Path:
/messages/:messageId
- 認証: 必須(Bearer トークン)
Handlers: updateChatMessage
, getChatMessageById
, normalizeChatMessageTerminator
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), ownsMessage
(['params', 'requestParams', 'messageId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.updateChatMessageRoute);
deleteChatMessageRoute
ID でメッセージを削除します。
目的: アクセス制御を使用してメッセージを削除します
Route Details:
- Method:
DELETE
- Path:
/messages/:messageId
- 認証: 必須(Bearer トークン)
Handlers: deleteChatMessage
, deleteChatMessageTerminator
Validators: isAuthenticated
, some
(checkIdentityType
(['admin']), ownsMessage
(['params', 'requestParams', 'messageId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.deleteChatMessageRoute);
🔗 関連ドキュメント
- チャットドメインの概要 - チャットドメインの概要
- チャットスキーマ - チャット検証スキーマ
- チャットハンドラー - チャットビジネスロジック関数