Horse CSResponsePagination
CSResponsePagination103
APIのRESTFULLでJSONデータをページングするための馬サーバーミドルウェア
$ boss install https://github.com/claudneysessa/Horse-CSResponsePaginationJhonsonミドルウェアを使用している場合、宣言はJhonson宣言の前に行われなければならず、圧縮ミドルウェアも使用する場合は、圧縮宣言の後に宣言が行われなければなりません。
THorse
.Use(Compression())
.Use(CSResponsePagination()) // <<-- Here!
.Use(Jhonson);
データのページングを有効にするには、次のパラメーターを要求のヘッダーに通知するだけです。
| パラメーター | タイプ | 説明 |
|---|---|---|
| 制限 | 整数 | ページごとのレコード数 |
| オフセット | 整数 | 表示されるページ |
csresponsepaginationを使用した馬サーバーのサンプル:
uses
Horse,
Horse.Compression,
Horse.Jhonson,
Horse.CSResponsePagination,
System.SysUtils,
System.JSON,
DBClient,
DataSet.Serialize;
begin
THorse
.Use(Compression())
.Use(CSResponsePagination())
.Use(Jhonson);
THorse.Get( ' /testeCSPagination ' ,
procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
var
DataSet: TClientDataSet;
begin
DataSet := TClientDataSet.Create( nil );
try
DataSet.LoadFromFile( ' dataSetExample.xml ' );
Res.Send<TJsonArray>(DataSet.ToJsonArray);
finally
DataSet.Free;
end ;
end );
THorse.Listen( 8888 );
end .結果本体でページネーションを使用することを選択すると、csResponsepaginationは、結果本体にページネーションデータを提示するカスタマイズされたリターンを生成します。
| 分野 | 説明 |
|---|---|
| カウント | レコードの総数 |
| ページ | 合計既存のページ |
| 制限 | ページごとのレコードの総数 |
| オフセット | 選択したページ |
| サイズ | 選択したページのレコード数 |
| データ | 結果配列 |
JSON結果:
{
"count" : 564 ,
"pages" : 113 ,
"limit" : 5 ,
"offset" : 2 ,
"size" : 5 ,
"data" : []
}サンプルコード:
begin
THorse
.Use(Compression())
.Use(CSResponsePagination(false)) // <<-- paginateOnHeaders = false
.Use(Jhonson);
THorse.Get( ' /testeCSPagination ' ,
procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
var
DataSet: TClientDataSet;
begin
DataSet := TClientDataSet.Create( nil );
try
DataSet.LoadFromFile( ' dataSetExample.xml ' );
Res.Send<TJsonArray>(DataSet.ToJsonArray);
finally
DataSet.Free;
end ;
end );
THorse.Listen( 8888 );
end .応答ヘッダーでページネーションを使用することを選択すると、CSResponsepaginationは、応答ヘッダーにデータを提示するいくつかのパーソナライズされた情報を生成します。
| 分野 | 説明 |
|---|---|
| X-Pagination-Count | レコードの総数 |
| X-Pagination-Pages | 合計既存のページ |
| X-Pagination-limit | ページごとのレコードの総数 |
| X-Pagination-Offset | 選択したページ |
| X-Pagination-Size | 選択したページのレコード数 |
サンプルコード:
begin
THorse
.Use(Compression())
.Use(CSResponsePagination(true)) // <<-- paginateOnHeaders = true
.Use(Jhonson);
THorse.Get( ' /testeCSPagination ' ,
procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
var
DataSet: TClientDataSet;
begin
DataSet := TClientDataSet.Create( nil );
try
DataSet.LoadFromFile( ' dataSetExample.xml ' );
Res.Send<TJsonArray>(DataSet.ToJsonArray);
finally
DataSet.Free;
end ;
end );
THorse.Listen( 8888 );
end .応答要素の説明を変更する必要がある場合、以下の例に示すように、APIユニットにユニット[hors.csresponsepagination.types.pas]を含めることで使用できる構成オブジェクトがあります。
このようにして、ボディ経由のリターンとResponseheadersによるリターンの両方の説明を変更できます。
サンプルコード:
var
PaginationConfig: TPaginationConfig;
begin
PaginationConfig := TPaginationConfig.Create;
PaginationConfig.paginateOnHeaders := False;
PaginationConfig.body.count := ' count ' ;
PaginationConfig.body.page := ' pages ' ;
PaginationConfig.body.limit := ' limit ' ;
PaginationConfig.body.offset := ' offset ' ;
PaginationConfig.body.size := ' size ' ;
PaginationConfig.body.data := ' data ' ;
// or
PaginationConfig.paginateOnHeaders := True;
PaginationConfig.header.count := ' X-Total-Count ' ;
PaginationConfig.header.page := ' X-Total-Pages ' ;
PaginationConfig.header.limit := ' X-Page-Limit ' ;
PaginationConfig.header.offset := ' X-Page-Offset ' ;
PaginationConfig.header.size := ' X-Page-Size ' ;
THorse
.Use(Compression())
.Use(CSResponsePagination(PaginationConfig))
.Use(Jhonson);
THorse.Get( ' /testeCSPagination ' ,
procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
var
DataSet: TClientDataSet;
begin
DataSet := TClientDataSet.Create( nil );
try
DataSet.LoadFromFile( ' dataSetExample.xml ' );
Res.Send<TJsonArray>(DataSet.ToJsonArray);
finally
DataSet.Free;
end ;
end );
THorse.Listen( 8888 );
end .