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等框架中的写法一样了,看个人的喜好吧。
内容来源于网络如有侵权请私信删除
文章来源: 博客园
- 还没有人评论,欢迎说说您的想法!