begin HttpServer := TRtcHttpServer.Create(nil); DataProvider := TRtcDataProvider.Create(nil); try DataProvider.Server := HttpServer; DataProvider.OnCheckRequest := DataProvider.Anon( procedure(Sender: TRtcConnection) begin with Sender do if (Request.Method = 'GET') and (Request.ContentLength = 0) then if (Request.URI = '/cats') then Accept; end); DataProvider.OnDataReceived := DataProvider.Anon( procedure(Sender: TRtcConnection) var DBObject: TDBObject; begin with Sender do begin if Request.Complete then begin Response.ContentType := 'application/json'; DBObject := DBPool.Acquire('MySQLDemo'); try try DBObject.Query.Open('SELECT * FROM cats'); //将查询的数据集转换为JSON发送到客户端 WriteEx(DBObject.Query.ToJsonArray.toJSONEx); except on E: Exception do Write(E.Message); end; finally DBPool.Release(DBObject); end; end; end;
end);
HttpServer.OnRequestNotAccepted := HttpServer.Anon( procedure(Sender: TRtcConnection) begin with Sender do begin Response.Status(404, 'Not Found'); Response.ContentType := 'text/plain'; Write('Bad command.'); Disconnect; end; end); HttpServer.OnListenStart := HttpServer.Anon( procedure(Sender: TRtcConnection) begin Writeln('RTC WEB 服务已启动.'); end); HttpServer.OnListenStop := HttpServer.Anon( procedure(Sender: TRtcConnection) begin Writeln('RTC WEB 服务已停止.'); end); HttpServer.OnListenError := HttpServer.Anon( procedure(Sender: TRtcConnection; E: Exception) begin Writeln('Server Error: ' + E.Message); end);
// 创建数据库连接配置 var ConnectionDef := FDManager.ConnectionDefs.Add; ConnectionDef.ParseString(ConnectionString);
//配置数据连接对象池 DBPool.OnCreateObject := procedure(Sender: TObject; var AObject: TDBObject) begin AObject := TDBObject.Create; end;
DBPool.OnDestroyObject := procedure(Sender: TObject; var AObject: TDBObject) begin FreeAndNil(AObject); end; //启动连接池 DBPool.Start();