خادم الخيول الوسيطة لترحيل بيانات JSON في APIs's Restfull
$ 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 empetset | صفحة محددة |
| 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 .إذا كانت هناك حاجة لتعديل وصف عناصر الاستجابة ، فهناك كائن التكوين الذي يمكن استخدامه من خلال تضمين الوحدة [Horse.csresponsepagination.types.pas] في وحدة API كما هو موضح في المثال أدناه.
وبهذه الطريقة يمكننا تغيير وصف كل من العودة عبر الجسم والعودة عبر رؤوس الاستجابة.
نموذج الرمز:
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 .