💬 チャットルートブロック
チャットルートブロックは、Nodeblocksアプリケーションにおけるチャット管理操作のための事前設定されたHTTPエンドポイントを提供します。これらのルートは、ハンドラー、バリデーター、ミドルウェアを組み合わせて、適切な認証、認可、エラー処理を備えた完全なAPIエンドポイントを作成します。
🎯 概要
チャットルートブロックは以下を目的として設計されています:
- チャット管理操作のための完全なAPIエンドポイントの提供
- 安全な操作のためのハンドラーとバリデーターの組み合わせ
- 認証と認可チェックの包含
- 関数コンポジションパターンのサポート
- ログとエラー管理の自動処理
📋 ルート構造
各チャットルートは一貫したパターンに従います:
- HTTPメソッド: 操作タイプを定義(GET、POST、PATCH、DELETE)
- パス: パラメータを含むエンドポイントURLを指定
- ハンドラー: ビジネスロジック用のコンポーズされた関数チェーン
- バリデーター: 認証と認可のチェック
🔧 利用可能なチャットルート
チャンネルルート
createChatChannelRoute
新しいチャンネルを作成し、作成されたリソースを返します。
目的: 完全なリソース取得によるチャンネル作成を処理
ルート詳細:
- メソッド:
POST
- パス:
/channels
- 認証: 必須(Bearerトークン)
ハンドラー: createChatChannel
, getChatChannelById
, createChatChannelTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateChannelAccess
(['owner'], getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.createChatChannelRoute);
findChatChannelsRoute
正規化されたリストフォーマットですべてのチャンネルを取得します。
目的: ページネーションによるチャンネルリスト
ルート詳細:
- メソッド:
GET
- パス:
/channels
- 認証: 必須(Bearerトークン)
ハンドラー: findChatChannels
, normalizeChatChannelsListTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.findChatChannelsRoute);
getChatChannelRoute
IDで特定のチャンネルを取得します。
目的: アクセス制御によるチャンネルデータの取得
ルート詳細:
- メソッド:
GET
- パス:
/channels/:channelId
- 認証: 必須(Bearerトークン)
ハンドラー: getChatChannelById
, normalizeChatChannelTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateChannelAccess
(['owner', 'member'], getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.getChatChannelRoute);
updateChatChannelRoute
既存のチャンネルを更新し、更新されたリソースを返します。
目的: アクセス制御によるチャンネルデータの変更
ルート詳細:
- メソッド:
PATCH
- パス:
/channels/:channelId
- 認証: 必須(Bearerトークン)
ハンドラー: updateChatChannel
, getChatChannelById
, normalizeChatChannelTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateChannelAccess
(['owner'], getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.updateChatChannelRoute);
deleteChatChannelRoute
IDでチャンネルを削除します。
目的: アクセス制御によるチャンネルの削除
ルート詳細:
- メソッド:
DELETE
- パス:
/channels/:channelId
- 認証: 必須(Bearerトークン)
ハンドラー: deleteChatChannel
, deleteChatChannelTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), some(validateResourceAccess
(['admin'], getBearerTokenInfo), validateChannelAccess
(['owner'], getBearerTokenInfo))
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.deleteChatChannelRoute);
メッセージルート
createChatMessageRoute
新しいメッセージを作成し、作成されたリソースを返します。
目的: チャンネルコンテキストによるメッセージ作成を処理
ルート詳細:
- メソッド:
POST
- パス:
/channels/:channelId/messages
- 認証: 必須(Bearerトークン)
ハンドラー: createChatMessage
, getChatMessageById
, normalizeChatMessageTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateChannelAccess
(['member'], getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.createChatMessageRoute);
findChatMessagesRoute
チャンネル内のメッセージを時系列で取得します。
目的: ページネーションによるメッセージ履歴の取得
ルート詳細:
- メソッド:
GET
- パス:
/channels/:channelId/messages
- 認証: 必須(Bearerトークン)
ハンドラー: findChatMessages
, normalizeChatMessagesListTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateChannelAccess
(['member'], getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.findChatMessagesRoute);
getChatMessageRoute
IDで特定のメッセージを取得します。
目的: アクセス制御によるメッセージデータの取得
ルート詳細:
- メソッド:
GET
- パス:
/messages/:messageId
- 認証: 必須(Bearerトークン)
ハンドラー: getChatMessageById
, normalizeChatMessageTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateMessageAccess
(['sender', 'channelMember'], getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.getChatMessageRoute);
updateChatMessageRoute
既存のメッセージを更新し、更新されたリソースを返します。
目的: アクセス制御によるメッセージデータの変更
ルート詳細:
- メソッド:
PATCH
- パス:
/messages/:messageId
- 認証: 必須(Bearerトークン)
ハンドラー: updateChatMessage
, getChatMessageById
, normalizeChatMessageTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), some(validateResourceAccess
(['admin'], getBearerTokenInfo), validateMessageAccess
(['owner'], getBearerTokenInfo))
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.updateChatMessageRoute);
deleteChatMessageRoute
IDでメッセージを削除します。
目的: アクセス制御によるメッセージの削除
ルート詳細:
- メソッド:
DELETE
- パス:
/messages/:messageId
- 認証: 必須(Bearerトークン)
ハンドラー: deleteChatMessage
, deleteChatMessageTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), some(validateResourceAccess
(['admin'], getBearerTokenInfo), validateMessageAccess
(['owner'], getBearerTokenInfo))
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.deleteChatMessageRoute);
サブスクリプションルート
createChatSubscriptionRoute
チャンネルへの新しいサブスクリプションを作成します。
目的: チャンネル通知管理を処理
ルート詳細:
- メソッド:
POST
- パス:
/channels/:channelId/subscriptions
- 認証: 必須(Bearerトークン)
ハンドラー: createChatSubscription
, getChatSubscriptionById
, normalizeChatSubscriptionTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateChannelAccess
(['member'], getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.createChatSubscriptionRoute);
findChatSubscriptionsRoute
正規化されたリストフォーマットですべてのサブスクリプションを取得します。
目的: ページネーションによるサブスクリプションリスト
ルート詳細:
- メソッド:
GET
- パス:
/subscriptions
- 認証: 必須(Bearerトークン)
ハンドラー: findChatSubscriptions
, normalizeChatSubscriptionsListTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.findChatSubscriptionsRoute);
getChatSubscriptionRoute
IDで特定のサブスクリプションを取得します。
目的: サブスクリプションデータの取得
ルート詳細:
- メソッド:
GET
- パス:
/subscriptions/:subscriptionId
- 認証: 必須(Bearerトークン)
ハンドラー: getChatSubscriptionById
, normalizeChatSubscriptionTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.getChatSubscriptionRoute);
deleteChatSubscriptionRoute
IDでサブスクリプションを削除します。
目的: サブスクリプションの削除
ルート詳細:
- メソッド:
DELETE
- パス:
/subscriptions/:subscriptionId
- 認証: 必須(Bearerトークン)
ハンドラー: deleteChatSubscription
, deleteChatSubscriptionTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.deleteChatSubscriptionRoute);
📋 ルートパターン
認証要件
すべてのチャットルートは有効なBearerトークンによる認証が必要です。
アクセス制御
チャットルートは以下のアクセスレベルをサポートします:
- owner: チャンネル所有者アクセス
- member: チャンネルメンバーアクセス
- sender: メッセージ送信者アクセス
- channelMember: チャンネルメンバーによるメッセージアクセス
エラー処理
すべてのルートには自動エラー処理とログが含まれています。
🔗 関連ドキュメント
- チャットハンドラーブロック - チャットビジネスロジック関数
- チャットスキーマブロック - チャットデータ検証と契約
- チャットバリデーターブロック - チャット検証関数
- チャットフィーチャーブロック - チャットコンポーズ機能