Prologue:用NIM编写的功能强大的Web框架

2020-10-21 20:25:07

导入序言过程hello*(ctx:context){。Async.}=resp&34;Hello,Prologue&34;var app=newApp()app。获取(";/static/*";,hello)APP。获取(";/*/static";,hello)应用程序。获取(";/static/plates/{path}/*";,hello)APP。运行()。

Prologue现在支持必须位于URL末尾的贪婪($)字符。如果前面的部分匹配,则贪婪字符将匹配所有剩余的URL部分。

Import prologue import std/with var app=newApp()base=newGroup(app,";/apiv2";,@[])level 1=newGroup(app,";/level 1";,@[],base)level 2=newGroup(app,";/level 2";,@[],level 1)level3=newGroup(app,";/level3";,@[],level 2)proc hello(ctx:context){。异步}=Resp";Hello";Proc HI(CTX:Context){。Async.}=对应于Hi";Proc Home(CTX:Context){。异步}=响应(";/hello";,hello)GET(";/hello";,hello)GET(";/hi";,hi)POST(";/home";,home)#/apiv2/level 1/hello with level 1:get(";/hello";,hello)get(";/hi";,hi)POST(";/home";,home)#/apiv2/level 1/level 2/hello with level 2:get(";/hello";,hello)get(";/hi";,hi)post(";/home";,home)#/apiv2/level 1/level 2/level 3/hello with Level 3:get(";/hello";,hello)get(";/hi";,hi)post(";/home";,主页)应用程序。运行()。

Import prologue var app=newApp()base=newGroup(app,";/apiv2";,@[])level 1=newGroup(app,";/level 1";,@[],base)level 2=newGroup(app,";/level 2";,@[],level 1)proc hello(ctx:context){。异步}=Resp";Hello";Proc HI(CTX:Context){。Async.}=对应于Hi";Proc Home(CTX:Context){。异步。}=resp";主页";让urlpattern1=@[pattern(";/hello";,hello),hello),pattern(";/hi";,hi)]urlpattern2=@[pattern(";/home";,home)]tab={level 1:urlpattern1,level 2:urlpattern2}应用程序。AddGroup(选项卡)应用程序。运行()。

Import prologue import prologue/websocket proc hello*(ctx:context){。异步.}=var ws=等待新WebSocket(CTX)等待%ws。在ws.readyState==Open时发送(";欢迎使用Simple Echo服务器";):let Packet=等待ws。ReceiveStrPacket()等待%ws。发送(数据包)Resp";<;h1>;Hello,Prologue!<;/h1>;&34;var app=newApp()app。获取(";/ws";,你好)应用程序。运行()。

导入序言导入strformat type UserContext=ref上下文数据的对象:int proc hello*(ctx:context){。Async.}=Inc.CTX。UserContext.data echo fmt";{ctx.UserContext.data=}";resp";<;h1>;Hello,Prologue!<;/h1>;&34;var app=newApp()app。使用(extendContextMiddleWare(UserContext))APP。获取(";/";,你好)APP。运行()。

IMPOLOUE IMPORT strformat type UserContext=ref上下文数据的Object:Int ExperientContext=Concept CTX is Context ctx.data is int proc ExperientMiddleware[T:ExperientContext](ctxType:typedesc[T]):HandlerAsync=Mixin Await Result=proc(ctx:Context){。异步}=Inc ctx.ctxType.data echo fmt";{ctx.ctxType.data=}";等待开关(CTX)过程问候*(CTX:Context){。Async.}=Inc.CTX。UserContext.data echo fmt";{ctx.UserContext.data=}";resp";<;h1>;Hello,Prologue!<;/h1>;&34;var app=newApp()app。使用(extendContextMiddleWare(UserContext))APP。使用(实验性中间件(UserContext))APP。获取(";/";,你好)APP。运行()。

如果您对Prologue感兴趣或想了解更多关于Prologue的信息,欢迎加入我们的Discord服务器。