WebBroker 的 PathInfo

背景知识

Delphi 的 WebBroker 框架,用来做一个给浏览器访问的 Web 服务器后端程序,非常的简单又好用。尤其是在最近的新版 Delphi 11 开始增加了 WebStencils 功能以后,再配合 HTMX 简直是 WEB 开发的利器。

WebBroker 的基本规则很简单,就是通过 URL 里面的不同的 Path 来分派访问到不同的事件方法里面去。对应到 WebModule 里面的多个不同的 WebActionItem 的 OnAction 事件。

所谓 URL 的不同路径,比如:

  • http://localhost/login
  • http://localhost/User?name=pcplayer

上述不同的路径,就是 PathInfo

PathInfo 的规则

WebBroker 的 TWebModule1 里面,添加一个 ActionItem1,在属性面板里面,设置它的 PathInfo 为 abc,IDE 会自动在它的前面添加斜杠: / ;变成 “/abc”
为这个 ActionItem1 增加一个 OnAction 事件方法:

procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  Response.Content := 'this is from ' + Request.PathTranslated;
end;

访问路径 :http://localhost:8080/abc 就会触发上述事件。

值得注意:http://localhost:8080/abc/ 结尾多一个斜杠,WebBroker 不会解释为 PathInfo 是 /abc,而是解释为 /abc/ 这样就不会触发上述事件,而是去执行默认的 Action;

实际情况:如果设置 PathInfo 是 /abc*,也就是在 abc 后面加上一个 * 号,则使用 http://localhost:8080/abc/ 访问也没有问题了。因此,最好是给每个 PathInfo 后面都加上 * 号。

WebServices

WebServices 也是基于 WebBroker 的。因此,一个 WebServices 在支持 SOAP 接口函数调用的同时,是可以当作一个 WebServer 的。给它的 WebModule 里面增加 ActionItem 设置好 PathInfo 就可以用浏览器访问。

WebServices 的自动分派

WebService 有两个 PathInfo:

  • wsdl
  • soap

上述两个 PathInfo 在 WebServices 的 WebModule 里面,看不到对应的 ActionItem ;在 WebServices 的 WebBroker 里面,有 3 个控件:

  • HTTPSoapDispatcher1
  • HTTPSoapPascalInvoker1
  • WSDLHTMLPublish1

在 HTTPSoapDispatcher1 和 WSDLHTMLPublish1 都有内嵌的一个对象:FWebDispatch: TWebDispatch; 而且直接暴露在 published 部分,也就是在属性面板里面能够看到。这个 TWebDispatch 有一个属性:PathInfo。TWebDispatch 定义在单元 Web.AutoDisp.pas 里面。看单元名字,就是自动分派。也就是说,在 WebModule 里面放置的对象,如果它内部有 TWebDispatch 对象并且有 PathInfo 则对该 PathInfo 路径的访问会自动分派到该对象,不需要专门在 WebModule 里面为这个 PathInfo 添加一个 ActionItem.

要点总结

  1. WebBroker 里面,WebActionItem 的路径,后面必须加上 * 号,比如路径是 abc,必须变成 abc* 以避免实际 URL 的结尾有路径斜杠时,不能分派到这个 Action;
  2. WebService 里面,可以给 WebModule 增加除了 wsdl 和 soap 以外的其它路径,作为 WEB 服务器使用。一个 WebServices 服务器可以同时支持 SOAP 访问和来自浏览器的页面访问。
内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力分配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力分配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据和技术支持。; 适合人群:具备一定自动控制理论基础和Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在三维空间中的精确点对点运动控制;② 对比分析不同推力分配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力分配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值