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.

TIdHTTPServer制作REST中间件的更多相关文章

  1. STM32标准外设库、 HAL库、LL库

    工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库.到目前为止,有标准外设库(STD库).HAL库.LL库 三种.前两者都是常用的库,后面的LL库是ST最近才添加,目前支持的 ...

  2. STM32之HAL库、标准外设库、LL库(STM32 Embedded Software)-(转载)

    STM32 Embedded Software  工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库.到目前为止,有标准外设库(STD库).HAL库.LL库 三种.前两者都是 ...

  3. iKcamp团队制作|基于Koa2搭建Node.js实战(含视频)☞ 中间件用法

    中间件用法--讲解 Koa2 中间件的用法及如何开发中间件

  4. AgileEAS.NET SOA中间件平台更新日志 2015-04-28

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  5. 转---B/S结构JavaEE WebApp的全自动安装包制作心得

    JavaEE的Web应用程序如今已大行其道,但其安装.配置.部署却一直繁琐无比,客观上阻碍了Web应用程序更大规模的推广和应用.因此,开发方制作一个集JDK.Web中间件.开源数据库的全自动安装程序很 ...

  6. 使用 HTML5、CSS3 和 MathML 在 EPUB 3 中制作版式丰富的出版物

    探索用于高级排版和印刷的新一代开放电子书标准 EPUB 3.0 是最新的行业标准 XML 电子书格式,它采用了 HTML5 和 CSS3,因而融入了现代 Web 技术.它重点关注 XML 驱动的工具包 ...

  7. Petroglyph访问:中间件游戏

    Xsolla有幸与Petroglyph的总裁及创始人Michael Legg进行了对话. 这是及时战略游戏中对主要一家公司. 由前Westwood的员工 创办,还设计了一块新的RTS游戏-Grey G ...

  8. Django:之中间件、微信接口和单元测试

    Django中间件 我们从浏览器发出一个请求 Request,得到一个响应后的内容 HttpResponse ,这个请求传递到 Django的过程如下: 也就是说,每一个请求都是先通过中间件中的 pr ...

  9. mongodb入门级的视频教程-简易客户管理系统制作

    本套教程作为mongodb入门级的视频教程,首先讲解了mongodb的下载.安装,环境变量的设置.启动mongodb和将mongodb安装成为windows服务.然后进一步讲解了mongodb里面集合 ...

随机推荐

  1. MiniProfiler监控调试MVC5以及EntityFramework6性能

    想要通过在MVC中view中直观的查看页面加载以及后台EF执行情况,可以通过MiniProfiler小工具来实现. 但是从网上搜索的相关信息要么是MVC4下的老版本的MiniProfiler,要么就是 ...

  2. 下拉列表 Spinner

    在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉列表,在其中每个下拉列表项使用<option>表示即可.这是在Web开发中一个必不可少的交 ...

  3. poj2449 Remmarguts' Date K短路 A*

    K短路裸题. #include <algorithm> #include <iostream> #include <cstring> #include <cs ...

  4. python-高级编程-07-端口

    TCP和UDP协议中都有端口这个概念,但是端口却不是IP协议的一部分 端口的出现主要是为了给协议栈和应用对应 .协议栈端口号将数据分配给不同的应用程序 .应用层程序用端口号去区分不同的链接 TCP 和 ...

  5. 浮动 float

    1.未设浮动属性,位于标准流中 2.如果设置浮动属性,则容器不再位于标准流中,不再占用空间.容器会根据内容确定宽度 3.尽量将搜索引擎要搜索的内容放到网页的前部,更要容易排名到 4.clear属性清除 ...

  6. [python工具][1]sublime安装与配置

    http://www.cnblogs.com/wind128/p/4409422.html 1 官网下载版本  http://www.sublimetext.com/3 选择 Windows - al ...

  7. 【bzoj3680】吊打XXX 随机化

    题目描述 gty又虐了一场比赛,被虐的蒟蒻们决定吊打gty.gty见大势不好机智的分出了n个分身,但还是被人多势众的蒟蒻抓住了.蒟蒻们将n个gty吊在n根绳子上,每根绳子穿过天台的一个洞.这n根绳子有 ...

  8. NOJ——聊天止于呵呵(string流重定向+map,水题)

    [1645] 聊天止于呵呵 时间限制: 5000 ms 内存限制: 65535 K 问题描述 (现代版)俗话说:流言止于智者,聊天止于呵呵.输入一段聊天记录,你的任务是数一数有 多少段对话“止于呵呵” ...

  9. 最里层的是child元素

    1. 简介A convenience widget that combines common painting, positioning, and sizing widgets. Container在 ...

  10. api调用安全

    直接传 key 简直就是多此一举啊,随便监听一下网络就能把你的 key 盗走. 最简单的方式是使用签名,各大开放平台都是这样做的,性能好,安全性不错. 签名基本原理是通过 key/secret 的实现 ...