Horse CSResponsePagination
CSResponsePagination103
API의 RESTFULL에서 JSON 데이터 페이징을위한 말 서버 미들웨어
$ boss install https://github.com/claudneysessa/Horse-CSResponsePaginationJhonson Middleware를 사용하는 경우 선언은 Jhonson 선언 전에 이루어져야하며 압축 미들웨어를 사용하는 경우 압축 선언 후에 선언이 나와야합니다.
THorse
.Use(Compression())
.Use(CSResponsePagination()) // <<-- Here!
.Use(Jhonson);
데이터 페이징을 활성화하려면 요청 헤더에게 다음 매개 변수를 알리십시오.
| 매개 변수 | 유형 | 설명 |
|---|---|---|
| 한계 | 정수 | 페이지 당 레코드 수 |
| 오프셋 | 정수 | 표시 할 페이지 |
CSREPONSEPAGINATION을 사용한 샘플 말 서버 :
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 .결과 본문에서 Pagination을 사용하기로 선택할 때 CSREPONSEPAGINATION은 결과 본문에서 Pagination 데이터를 제시하는 맞춤형 반환을 생성합니다.
| 필드 | 설명 |
|---|---|
| 세다 | 총 레코드 수 |
| 페이지 | 기존 페이지 |
| 한계 | 페이지 당 총 레코드 수 |
| 오프셋 | 선택된 페이지 |
| 크기 | 선택한 페이지의 레코드 수 |
| 데이터 | 결과 배열 |
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 .응답 헤더에서 Pagination을 사용하기로 선택할 때 CSREPONSEPAGINATION은 응답 헤더에 데이터를 제시하는 일부 개인 정보를 생성합니다.
| 필드 | 설명 |
|---|---|
| x- 페이 화-카운트 | 총 레코드 수 |
| X- 페이 션 페지 | 기존 페이지 |
| x- 가네이션 제한 | 페이지 당 총 레코드 수 |
| x- 지분-오프셋 | 선택된 페이지 |
| x- 가네이션 크기 | 선택한 페이지의 레코드 수 |
샘플 코드 :
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.csresponspagination.types.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 .