关于如何在DelphiRESTDatasnap中声明POST请求?和delphi发送post请求的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Delphi2010Datasnap–设计查
关于如何在 Delphi REST Datasnap 中声明 POST 请求?和delphi发送post请求的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Delphi 2010 Datasnap – 设计查询、DELPHI DATASNAP 2010 入门操作(1)为什么要用datasnap 2010、DELPHI DATASNAP 2010 入门操作(2)不写一行代码、Delphi Datasnap REST Server中的异常处理等相关知识的信息别忘了在本站进行查找喔。
本文目录一览:- 如何在 Delphi REST Datasnap 中声明 POST 请求?(delphi发送post请求)
- Delphi 2010 Datasnap – 设计查询
- DELPHI DATASNAP 2010 入门操作(1)为什么要用datasnap 2010
- DELPHI DATASNAP 2010 入门操作(2)不写一行代码
- Delphi Datasnap REST Server中的异常处理
如何在 Delphi REST Datasnap 中声明 POST 请求?(delphi发送post请求)
通过不使用函数的字符串参数,而是通过传递 JSONObject 使用 Custom body
,我找到了我希望它工作的方式。
方法为 POST
,内容类型为 application/JSON
。
function TDM_Test.DS_insertArticles(pUrlJsonObj: TJSONObject): string;
JSonValue := TJSONObject.ParseJSONValue(pUrlJsonObj);
// Retrieve data for database fields
artCode := JSONValue.GetValue<string>('article[0].code');
artName := JSONValue.GetValue<string>('article[0].name');
artPrice := JSONValue.GetValue<string>('article[0].price');
//... Proceed to INSERT SQL with these values
Delphi 2010 Datasnap – 设计查询
我的主要问题是,我想让服务器端在连接和SQL查询方面高效,因为多个查询正在运行并且同时保持打开以查询数据,任何人都可以向我指明如何获取指导设计一个真实世界的Datasnap Server应用程序,因为该演示没有详细介绍.
谢谢
马特
解决方法
>(中间服务器)将管理会话或客户端将识别他们的会话每个连接(有状态与无状态)
>(中间服务器)您希望拥有多少缓存数据.你可以只缓存一些烦人的非常稳定的表,只在它们发生变化时查询它们(如果所有修改都通过服务器中间,如果没有,你需要像任意标记一样的东西 – 一个GUID,一个计数器 – 在表上匹配数据改变).
>(客户端/中间服务器)如果您的客户端将始终获得完整的数据集合或集合的片段.
(例如:产品可以有categoryId列,它是Category表的FK.您可以一直发送两者,或者客户端只能请求产品数据).
>(Mid-Server / RDBMS)您可能需要提供某种形式的自定义搜索.如果您对最常用的搜索条件有所了解,则可以提供(如果需要)索引覆盖来执行此操作.
>(中间服务器/ RDBMS)除非您计划对数据进行一些积极的缓存和/或对它们有一些好用,否则不要将大数据集带到中间服务器.中间服务器只是RDBMS的另一个客户端应用程序 – 如果两者都在同一台机器上,您可以与RDBMS进入内存/ cpu / IO竞争.
>(Mid-Server / RDBMS)在Mid-Server上执行您的业务规则,是许多纯粹主义者的口头禅.对我来说,均衡是关键.假设RDBMS有2000个存储过程(我没有说明,有真正的业务有这么多的SP),你的中型服务器可以在SP,GREAT解决2000个问题中的1500个问题上做出很好的工作.但如果最后的500可以改变最坏的情况,那就让他们独自一人.它可能比1500更麻烦.所以将两者混合,并使这500个软件项目成为另一个版本.
>(中间服务器/ RDBMS)我对存储过程的说法也可以应用于触发器和其他任何其他类型的RDBMS服务器功能,可以使您的生活更轻松.
>(Mid-Server / DataSnap)大多数原始细节都可以让数据集提供者使用.但学会利用OnBeforeUpdateRecord事件在需要时进行自定义处理.
>(Mid-Server / DataSnap)您知道只能使用修改后的数据创建ClientDataset
这种代码如下?你无法想象它有多么有用……
总结
以上是小编为你收集整理的Delphi 2010 Datasnap – 设计查询全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
DELPHI DATASNAP 2010 入门操作(1)为什么要用datasnap 2010
总结
以上是小编为你收集整理的DELPHI DATASNAP 2010 入门操作(1)为什么要用datasnap 2010全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
DELPHI DATASNAP 2010 入门操作(2)不写一行代码
总结
以上是小编为你收集整理的DELPHI DATASNAP 2010 入门操作(2)不写一行代码全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
Delphi Datasnap REST Server中的异常处理
但是,Datasnap服务不会发生此行为. TApplicationEvents.OnException事件永远不会被触发,所以我假设其他东西正在吃异常并在它到达之前处理它.
Web服务方法的结果中显示异常,这很好,因为这意味着我至少可以在客户端显示某些内容,但我还想在此之前捕获它,以便我可以处理不同的异常服务器-侧.
到目前为止我唯一一致的方法是将每个单独的方法包装在try..except块中,并在重新引发异常之前处理每个方法中的异常.但是,随着20种方法的Web服务不断增长,这种情况并没有真正扩大.
我也尝试过实现一些Datasnap组件的OnError,OnTrace和其他事件(TDSServer,TDSHTTPService,TDSTcpserverTransport等),但这些事件似乎也从未被解雇过.
有没有人遇到这样的事,拜托?
解决方法
我遇到了同样的问题,在阅读了大量资料后,我发现没有实际的解决方案.
所以示例(我的)StackTrace看起来像这样:
MyClass::MyServerMethod() /* skipping some funny unimportant RTTI/TValue handling here */ System::Rtti::TRttiMethod::Invoke Dsreflect::TDSMethod::Invoke(TObject,TDSMethodValues) TDSServerConnectionHandler::DbxExecute(const TDBXExecuteMessage) TDSServerCommand::DerivedExecuteUpdate TExecuteCallback TDSService::Execute(const string,const TRequestCommandHandler,TExecuteCallback) TDSService::ProcessRequest(const string,TExecuteCallback) TDSRESTService::ProcessREST(const string,const string,const TArray<Byte>,const TRequestCommandHandler) TDSRESTService::ProcessGETRequest(const string,TStrings,TArray<Byte>,TRequestCommandHandler) TDSRESTServer::DoDSrestcommand(TDSHTTPRequest,TDSHTTPResponse,string) TDSRESTServer::DoCommand(TDSHTTPContext,TDSHTTPRequest,TDSHTTPResponse) Dshttpwebbroker::TDSRESTWebdispatcher::dispatchRequest(TObject,Web::Httpapp::TWebRequest,Web::Httpapp::TWebResponse)
注意:这完全取决于您对DataSnap的使用.在上述情况下,请求通过TDSRESTWebdispatcher(来自TIdCustomHTTPServer)传递到DataSnap API.
> ServerMethod中引发的每个异常都将以TDSService :: ProcessRequest结束.
>在此过程中,捕获每个异常,并且仅将其消息添加到TRequestCommandHandler-> CommandList.
>此外,Message将作为JSON / DBX命令写入输出.
因此,我们永远不能处理异常对象并访问StackTrace或其他信息.所以这一点是不可接受的,必须改变
好消息是,这个程序是虚拟的,可以被覆盖.坏消息是,在上面的示例中,您必须使用自己的ProcessRequest过程(包括错误处理程序)扩展TDSRESTService,使用自己的DoDSrestcommand扩展TDSRESTServer(在那里TDSRESTService是在一个极大的过程中创建的)和TDSRESTWebdispatcher(取决于您的用法).
我个人的建议是不要使用DataSnap.
注意:在编写本文时,我没有找到任何OnError事件的调用.
关于如何在 Delphi REST Datasnap 中声明 POST 请求?和delphi发送post请求的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Delphi 2010 Datasnap – 设计查询、DELPHI DATASNAP 2010 入门操作(1)为什么要用datasnap 2010、DELPHI DATASNAP 2010 入门操作(2)不写一行代码、Delphi Datasnap REST Server中的异常处理等相关知识的信息别忘了在本站进行查找喔。
本文标签: