メインコンテンツまでスキップ
バージョン: 0.5.0 (最新)

💬 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);

🔗 関連ドキュメント