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

💬 チャットルートブロック

チャットルートブロックは、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: チャンネルメンバーによるメッセージアクセス

エラー処理

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


🔗 関連ドキュメント