利用Horse-Paginate (delphi中间件)做分页

  •  使用说明

要使用来自客户端的请求启用 JSON 数据分页,需要传递请求的 HEADER 的以下参数

     X-Paginate = true;

要控制分页,您可以在请求的 URL 中发送以下参数

    limit=X(这是分页记录限制)

    page=X(此参数告知应该返回哪个分页页面)

  • 安装

     boss install github.com/bittencourtthulio/Horse-Paginate

  样例

localhost:9000/ping?limit=10&page=5http://www.seusite.com:9000/ping?limit=10&page=5

  • 源码

unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.ExtCtrls,IdHTTP,IdSSLOpenSSL,System.JSON,REST.Json;

type
  THorse_Server = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    richedit: TRichEdit;
    procedure Button1Click(Sender: TObject);
  private
   function GetURLAsString(const aurl:  string): string;
   function Format_JSON(FJSON: String): String;
  public
    { Public declarations }
  end;

var
  Horse_Server: THorse_Server;

implementation
  uses
   Horse,
  Horse.Paginate,
  Horse.Jhonson,
  DataSet.Serialize,
 // System.JSON,
  DBClient;
{$R *.dfm}
//https://www.youtube.com/watch?v=Bs1G1-ZzTgE&list=PLvrBgLo9icwM9i2RPjrSXRHg0WdCUQsc4&index=1&t=234s
procedure THorse_Server.Button1Click(Sender: TObject);
begin
THorse
    .Use(Paginate)
    .Use(Jhonson);
  THorse.Get('/ping',
    procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
    var
      LDataSet: TClientDataSet;
    begin
      LDataSet := TClientDataSet.Create(nil);
      try
        LDataSet.LoadFromFile('items.xml');
        Res.Send<TJSONArray>(LDataSet.ToJsonArray);
      finally
        LDataSet.Free;
      end;
    end);
  THorse.Listen(9009);

  richedit.Lines.Add(Format_JSON(GetURLAsString('http://localhost:9009/ping'))) ;

end;

//json
function THorse_Server.GetURLAsString(const aurl:  string): string;
var
  lHTTP: TIdHTTP;
begin
  lHTTP := TIdHTTP.Create(nil);
  try
    lHTTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(lHTTP);
    Result := lHTTP.Get(aURL);
  finally
    lHTTP.Free;
  end;
end;


//格式化json         需要引用单元:System.JSON,REST.Json

function THorse_Server.Format_JSON(FJSON: String): String;
var
  JObjectData : TJSONObject;
  JArrayJSON : TJSONArray;
begin
  if TJSONObject.ParseJSONValue(FJSON) is TJSONObject then begin
    JObjectData := TJSONObject.ParseJSONValue(FJSON) as TJSONObject;
    Result := TJson.Format(JObjectData);
    JObjectData.Free;
  end else if TJSONObject.ParseJSONValue(FJSON) is TJSONArray then begin
    JArrayJSON := TJSONObject.ParseJSONValue(FJSON) as TJSONArray;
    Result := TJson.Format(JArrayJSON);
    JArrayJSON.DisposeOf;   //移动端有区别,否则和VCL没有区别。
  end else
    Result := FJSON;


end;
end.
  • 输出json运行效果

 

  • 分页

 源码下载:

https://download.csdn.net/download/zjg076000/86726890

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值