zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    Python xrange与range的区别返回的结果不一样
    matlab画立方体
    python查询数据类型
    Ubuntu下安装微信(electronic-wechat)
    python判断数组中是否有重复元素
    python构建数组
    Numpy中np.max(即np.amax)的用法
    你不知道C#只带有 get 访问器的属性是只读属性?
    Windows 平台安装配置 MongoDB
    一日一技:Ocelot网关使用IdentityServer4认证
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/6553935.html
Copyright © 2011-2022 走看看