มิดเดิลแวร์เซิร์ฟเวอร์ม้าสำหรับการเพจจีสันในการพักผ่อนของ APIS
$ boss install https://github.com/claudneysessa/Horse-CSResponsePaginationหากคุณใช้มิดเดิลแวร์ Jhonson การประกาศของคุณจะต้องมาก่อนการประกาศ 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 | รวมหน้าทั้งหมดที่มีอยู่ |
| X-Pagination-Limit | จำนวนระเบียนทั้งหมดต่อหน้า |
| X-Pagination-offset | หน้าเลือก |
| ขนาด X-pagination | จำนวนระเบียนสำหรับหน้าที่เลือก |
รหัสตัวอย่าง:
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 .หากมีความจำเป็นที่จะต้องแก้ไขคำอธิบายขององค์ประกอบการตอบสนองมีวัตถุการกำหนดค่าที่สามารถใช้งานได้โดยรวมถึงหน่วย [horse.csresponsepagination.types.pas] ในหน่วย API ดังแสดงในตัวอย่างด้านล่าง
ด้วยวิธีนี้เราสามารถเปลี่ยนคำอธิบายของทั้งการกลับมาผ่านร่างกายและผลตอบแทนผ่านทาง 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 .