• TIdHTTPServer制作REST中间件


    TIdHTTPServer制作REST中间件

    使用DELPHI7+INDY9开发

    // 陈新光 2017-2-21
    // LIS数据同步服务器
    // 浏览器输入:http://127.0.0.1:8000/test?t1=china&t2=cxg

    unit untMain;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs
    , IdBaseComponent, IdComponent, IdTCPServer, IdCustomHTTPServer, IdHTTPServer
    , IdThreadMgr, IdThreadMgrPool, StdCtrls, IniFiles
    ;

    type
    TfrmMain = class(TForm)
    IdHTTPServer1: TIdHTTPServer;
    IdThreadMgrPool1: TIdThreadMgrPool;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure IdHTTPServer1CommandGet(AThread: TIdPeerThread; ARequestInfo: TIdHTTPRequestInfo
    ; AResponseInfo: TIdHTTPResponseInfo);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    frmMain: TfrmMain;

    implementation

    {$R *.dfm}

    uses untDM;

    procedure TfrmMain.FormCreate(Sender: TObject);
    var
    ini: TIniFile;
    begin
    IdHTTPServer1.ThreadMgr := IdThreadMgrPool1;
    //设置绑定参数
    IdHTTPServer1.Active := False;
    IdHTTPServer1.Bindings.Clear;
    ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'config.ini');
    try
    IdHTTPServer1.DefaultPort := ini.ReadInteger('local', 'port', 0);
    finally
    ini.Free;
    end;
    IdHTTPServer1.Bindings.Add.IP := '127.0.0.1';
    //启动服务器
    IdHTTPServer1.Active := True;
    end;

    procedure TfrmMain.IdHTTPServer1CommandGet(AThread: TIdPeerThread; ARequestInfo: TIdHTTPRequestInfo;
    AResponseInfo: TIdHTTPResponseInfo);
    var
    method, sql: string;
    dm: TfrmDM;
    begin
    method := ARequestInfo.Document;
    if method = '/query' then
    begin
    sql := ARequestInfo.Params.Values['sql'];
    AResponseInfo.ResponseNo := 0;
    AResponseInfo.ContentType := 'text/html';
    dm := TfrmDM.Create(nil);
    try
    AResponseInfo.ContentText := dm.Query(sql);
    AResponseInfo.WriteContent;
    finally
    dm.free;
    end;
    end;
    end;

    end.

  • 相关阅读:
    laravel生命周期
    工厂模式
    PHP保留两位小数的几种方法
    存储单位转换
    防盗链之URL参数签名
    redis基础
    Redis 如何实现持久化
    Python高级语法-私有属性-with上下文管理器(4.7.3)
    Python高级语法-私有属性-魔法属性(4.7.2)
    Python高级语法-私有属性-名字重整(4.7.1)
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/6553935.html
Copyright © 2020-2023  润新知