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

📄 ページネーションスキーマブロック

ページネーションスキーマブロックは、Nodeblocksアプリケーション全体で標準化されたページネーションパラメータとメタデータのためのJSONスキーマ定義を提供します。これらのスキーマは、一貫したページネーション動作とレスポンスフォーマッティングを確保します。


🎯 概要

ページネーションスキーマブロックは以下を目的として設計されています:

  • すべてのAPIエンドポイントでのページネーションの標準化
  • 適切な制約によるページネーションパラメータの検証
  • レスポンスでの一貫したページネーションメタデータの確保
  • 共通操作のための再利用可能な文字列配列のサポート
  • エンティティ固有スキーマとのコンポジションの実現

📋 ページネーションスキーマ種類

クエリパラメータスキーマ

APIリクエストで使用されるページネーションクエリパラメータのためのスキーマ。

レスポンスメタデータスキーマ

APIレスポンスに含まれるページネーションメタデータのためのスキーマ。

ユーティリティスキーマ

共通のページネーション関連操作のための再利用可能スキーマ。


🔧 利用可能なページネーションスキーマ

paginationQueryParametersSchema

APIエンドポイント全体で標準化されたページネーションのためのページネーションクエリパラメータスキーマ。

目的: リスト/検索エンドポイント用の一貫したページネーションパラメータを提供

スキーマ詳細:

  • タイプ: OpenAPIParameter[]
  • パラメータ:
    • page?: number(1-1000、オプション) - ページネーション用ページ番号
    • limit?: number(1-50、オプション) - ページあたりのレコード数

使用方法:

import { schemas } from '@nodeblocks/backend-sdk';

const { paginationQueryParametersSchema } = schemas;

const schema = withSchema({
parameters: [
...paginationQueryParametersSchema,
// その他のパラメータ
]
});
// 使用例: GET /users?page=1&limit=10

paginationSchema

ページング済みレスポンス情報のためのページネーションメタデータスキーマ。

目的: APIレスポンス内のページネーションメタデータを検証

スキーマ詳細:

  • タイプ: object
  • 必須フィールド: page, limit, total, total_pages
  • 追加プロパティ: false(厳密な検証)
  • プロパティ:
    • page: number - 現在のページ番号(最小: 1)
    • limit: number - ページあたりのレコード数(最小: 1)
    • total: number - 総レコード数(最小: 0)
    • total_pages: number - 総ページ数(最小: 0)

使用方法:

import { schemas } from '@nodeblocks/backend-sdk';

const { paginationSchema } = schemas;

const validate = ajv.compile(paginationSchema);
const isValid = validate({
page: 1,
limit: 10,
total: 100,
total_pages: 10
});

arrayOfStringsSchema

再利用可能な文字列配列検証のための文字列配列スキーマ定義。

目的: 文字列値のみを含む配列を検証

スキーマ詳細:

  • タイプ: array
  • 項目: string
  • 追加プロパティ: false(厳密な検証)

使用方法:

import { schemas } from '@nodeblocks/backend-sdk';

const { arrayOfStringsSchema } = schemas;

const validate = ajv.compile(arrayOfStringsSchema);
const isValid = validate(['item1', 'item2', 'item3']);

🔗 関連ドキュメント