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等框架中的写法一样了,看个人的喜好吧。

 

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/Jiaojiawang/p/17636937.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!