Horse CSResponsePagination
CSResponsePagination103
馬服務器中間件,用於在API的Restfull中對JSON數據進行編寫
$ boss install https://github.com/claudneysessa/Horse-CSResponsePagination如果您使用的是jhonson中間件,則必須在jhonson聲明之前發表聲明,如果您還使用壓縮中間件,則必須在壓縮聲明之後進行聲明。
THorse
.Use(Compression())
.Use(CSResponsePagination()) // <<-- Here!
.Use(Jhonson);
為了啟用數據的分頁,只需告知標題以下參數:
| 範圍 | 類型 | 描述 |
|---|---|---|
| 限制 | 整數 | 每頁記錄數量 |
| 抵消 | 整數 | 要顯示的頁面 |
使用csresponsepaigation的樣本馬服務器:
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 .當選擇在結果主體中使用分頁時,csrespogepagination將產生定制的回報,顯示結果主體中的分頁數據。
| 場地 | 描述 |
|---|---|
| 數數 | 記錄總數 |
| 頁面 | 現有頁面總計 |
| 限制 | 每頁記錄總數 |
| 抵消 | 選定的頁面 |
| 尺寸 | 選定頁面的記錄數量 |
| 數據 | 結果數組 |
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 .當選擇在響應標頭中使用分頁時,csrespogepagination將生成一些個性化信息,將數據顯示在響應標頭中。
| 場地 | 描述 |
|---|---|
| X流派計數 | 記錄總數 |
| X-PAGINATION頁面 | 現有頁面總計 |
| X-pagination-limit | 每頁記錄總數 |
| X-Pagination-Pagination-Pagination | 選定的頁面 |
| 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單元中包括單元[horse.csrespensepagination.pas.pas]使用配置對象,如下所示。
通過這種方式,我們可以通過身體和通過響應式的返回來更改返回的描述。
示例代碼:
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 .