292人参与 • 2024-05-12 • Delphi
mormot2框架中有个thttpserver类,它有一个router属性,定义如下:
property router: turirouter read froute;
router是添加路由的入口点,它有和http协议对应的get, post, put, delete等方法,这些方法可以添加路由,下面常用的get方法定义。
procedure get(const auri: rawutf8; const aexecute: tonhttpserverrequest); overload;
tonhttpserverrequest = function(ctxt: thttpserverrequestabstract): cardinal of object;
这里我们不能像js中koa2类似的写法,除非我们写个helper类,给turirouter加个方法,然后就可以像koa2中的写法一样了,类似这样:
httpserver.router.getex('/api/login', function(ctx, txxxcontext): integer begin //代码 end;
如果不想使用上面的方式写代码,我们可以按delphi webmodule的方式写,即写不同的twebaction, 我们先定义tabstractroute抽象类,然后写不同的子类,代码类似这样:
tabstractrout = class protected fprefix: string; //路由前缀,很有必要, 以后/api2/login时,这里变动就行了。
furl: string;
fmethodtype: string; public procedure execute(ctx: txxxcontext); virtual; abstract; end; tloginroute = class(tabstractrout) public procedure execute(ctx: txxxcontext); overide; end;
这样就能适配turirouter.get方法了。
此外,我们也可以使用“贴标签”的方式来定义路由,即使用tcustomattribute,这样就和java等框架中的写法一样了,看个人的喜好吧。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论