IdHTTPServer(indy10)开发REST中间件

浏览器通过“get”方式查询数据URL样例:http://127.0.0.1:7777/query?sql=select * from t1

/query 表示是“查询”命令字

?后面是SQL参数

服务端代码:

procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
method, sql: string;
{$IFDEF ado}
dm: TfrmDMado;
{$ENDIF}
{$IFDEF odac}
dm: TfrmDModac;
{$ENDIF}
begin
method := ARequestInfo.Document;  // 获取命令字
if method = '' then
Exit;
{$ifdef ado}
CoInitialize(nil);
{$endif}
try
if method = '/query' then  // 查询数据
begin
sql := ARequestInfo.Params.Values['sql'];  // 取SQL参数
if sql = '' then
Exit;
AResponseInfo.ResponseNo := 0;
AResponseInfo.ContentType := 'text/html';
{$IFDEF ado}
dm := TfrmDMado.Create(nil);
{$ENDIF}
{$IFDEF odac}
dm := TfrmDModac.Create(nil);
{$ENDIF}
try
AResponseInfo.ContentText := dm.Query(sql);  // 返回数据引擎查询到的JSON格式的数据
AResponseInfo.WriteContent;  // 给申请者回复
finally
dm.Free;
end;
end;
except
on E: Exception do
begin

end;
end;
{$ifdef ado}
CoUninitialize;
{$endif}
end;

IdHTTPServer(indy10)开发REST中间件的更多相关文章

  1. 基于gin的golang web开发:中间件

    gin中间件(middleware)提供了类似于面向切面编程或路由拦截器的功能,可以在请求前和请求之后添加一些自定义逻辑.实际开发中有很多场景会用到中间件,例如:权限验证,缓存,错误处理,日志,事务等 ...

  2. 使用Go开发HTTP中间件

    原文地址    再web开发的背景下,"中间件"通常意思是"包装原始应用并添加一些额外的功能的应用的一部分".这个概念似乎总是不被人理解,但是我认为中间件非常棒 ...

  3. 全栈项目|小书架|服务器开发-Koa2中间件机制洋葱模型了解一下

    KOA2 是什么? Koa是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小.更富有表现力.更健壮的基石. 通过利用 asyn ...

  4. 【Traefik二次开发】中间件 Middleware 开发

    本篇只讨论HTTP中间件 中间件定义 https://doc.traefik.io/traefik/middlewares/overview/ Attached to the routers, pie ...

  5. 混合式APP开发中中间件方案Rexsee

    发现Rexsee时,他已经一年多没有更新过了,最后版本是2012年的. 他的实现思路是通过Android自带的Java - Javascript 桥机制,在WebView中的JavaScript同Ja ...

  6. 巨蟒python全栈开发django13:中间件部分

    1.回顾昨日内容 2.session认证装饰器 3.django整个流程 4.中间件简单应用 5.简单统计访问次数 6.中间件其他方法 7.orm单表内容回顾

  7. python全栈开发day70-Django中间件

    参考个人博客 http://wuchengyi.com/post/13/ 三.预习和扩展

  8. ASP.NET Core 开发-中间件(StaticFiles)使用

    ASP.NET Core 开发,中间件(StaticFiles)的使用,我们开发一款简易的静态文件服务器. 告别需要使用文件,又需要安装一个web服务器.现在随时随地打开程序即可使用,跨平台,方便快捷 ...

  9. 咏南中间件支持DELPHI低版本开发的两层程序平稳升级到三层

    提供DELPHI中间件及中间件集群,有意请联系. N年前,我们用DELPHI低版本开发的两层程序(比如工厂ERP系统),现在仍然在企业广泛地得到使用,但老系统有些跟不上企业的发展需要了.主要表现在:虽 ...

随机推荐

  1. HTTP 返回状态代码详细解释

    一:1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码. 100(继续)请求者应当继续提出请求. 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分:101(切换协议)请求者已要 ...

  2. Thread 多线程 同步

    当多个线程,访问同一个对象,调用同一个方法或访问同一个对象时.有时,必须保证访问的同步性.比如,一个银行信用卡账户具有5000元的信用额度.用户除具有一张主卡外,还办有多张子卡.这些卡的累计消费金额, ...

  3. RabbitMQ-Java客户端API指南-上

    RabbitMQ-Java客户端API指南-上 客户端API严格按照AMQP 0-9-1协议规范进行建模,并提供了易于使用的附加抽象. RabbitMQ Java客户端使用com.rabbitmq.c ...

  4. [洛谷P4656][CEOI2017]Palindromic Partitions

    题目大意:一个长度为$n$的字符串,要求把它分成尽可能多的小块,使得这些块构成回文串 题解:贪心,从两边从找尽可能小的块使得左右的块相等,判断相等可以用$hash$ 卡点:无 C++ Code: #i ...

  5. JavaScript中继承机制的模仿实现

    首先,我们用一个经典例子来简单阐述一下ECMAScript中的继承机制. 在几何学上,实质上几何形状只有两种,即椭圆形(是圆形的)和多边形(具有一定数量的边).圆是椭圆的一种,它只有一个焦点.三角形. ...

  6. CRichEditCtrl 输入字符串长度限制

    1.我用 CRichEditCtrl 控件,发现它通过代码可以向里面写大于 32KB 的字符,但手工却只能输入小于 32767 个字符,再多则自动舍弃. 2.初始化时调用CRichEditCtrl:: ...

  7. win7 无法启动此程序,因为计算机中丢失glut32.dll

    http://zhidao.baidu.com/link?url=9NZxqCvR7hvmKuVR1dUSdQB-TTv_re-g7lp-xZj5FKII04FnMvIKjFhKv299t6wv5Ht ...

  8. 双缓冲(Double Buffer)原理和使用【转】

    转自:http://blog.csdn.net/acs713/article/details/16359551 原文出自:http://blog.csdn.net/xiaohui_hubei/arti ...

  9. UVALIVE 3571 Visible Lattice Points

    就欧拉函数然后地推一下. #include <map> #include <set> #include <list> #include <cmath> ...

  10. 安卓SDK安装时出现的小问题

    在SDK Manager启动安装后出现网页不能访问的错误 错误日志如下 Fetching URL: https://dl-ssl.google.com/android/repository/repos ...