以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  服务器异步路由框架  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=164871)

--  作者:zoudezhao
--  发布时间:2021/5/7 14:27:00
--  服务器异步路由框架
闲来无事,做了一个简单的框架,方便大家可以将自己的精力更多的放到逻辑的实现上。整套代码采用的是官方的异步函数。
主要目的是为了帮助刚进入狐表的人来更快的掌握HTTP服务及函数等功能。
大致把模块区分成了控制器跟中间件。。
界面分为日志面板,控制器面板,中间件以及HTTP服务
控制器中访问路径NotFound不建议去除,具体函数可自行修改,去除后再访问不在控制器定义的页面时会报错。。
日志面板 通过每个函数的return "XXX"(String)可以查看每次返回的数据
控制器 为每个函数绑定访问路径
中间件 当router函数将请求转发给控制器时会先经过中间件。再中间件中可通过return obj{"error":true,"msg":"xxxx"}来打断本次请求,并返回给客户端错误信息,当error为false时,中间件会把自身已经获取到的数据通过JSON数据的方式回传给你正在访问的函数。通过 args(1)获取。也就是代码复用,同一个函数理论上没有中间件数量限制,忽略函数是数组可以通过,分割。代表哪几个函数上不需要这个函数
HTTP服务 支持同时开启多个服务。webpath支持绝对路径和相对路径("\\"开头),支持增加和减少静态文件类型

 

更新[2021-05-13]

 

优化错误的处理方式

 

当报错时不再会堵塞当前的访问,所有的错误将在日志中显示,不在会出现令人头疼的错误弹窗。



以下内容只有回复后才可以浏览

[此贴子已经被作者于2021/5/13 10:36:28编辑过]

--  作者:zoudezhao
--  发布时间:2021/5/7 14:27:00
--  
文件
--  作者:有点蓝
--  发布时间:2021/5/7 14:36:00
--  
多谢分享
--  作者:zhenghangbo
--  发布时间:2021/5/7 15:33:00
--  

--  作者:teng0731
--  发布时间:2021/5/7 15:52:00
--  
感谢,支持一下
--  作者:cnsjroom
--  发布时间:2021/5/7 21:37:00
--  回复:(zoudezhao)服务器异步路由框架
请教一下:
1、控制器卡片里面的访问路劲
api\\login   
login
这两个不同写法是有什么区别么?
都是对应在定义webPath下的\\web\\这个目录下的文件么?比如web\\api\\login?

2、中间件到底是起什么作用呢?
是对一个控制器里面的对应函数  启动或关闭之外  忽略函数是啥功能呢?

3、http服务里面的键是不是必须参照HttpServer里面对应的属性呢?

4、程序实现了采用多个端口同时启动借以实现多个http服务的启动
假设有a1、b1  a2、b2  a3、b3  a4、b4 不同的函数页面  怎么分别对应3000、3001、3002、3003这四个对应的端口值
并进行127.0.0.1:30000/a1.htm   127.0.0.1:30001/a2.htm  127.0.0.1:3002/a3.htm  127.0.0.1:30003/a4.htm的页面访问呢?

--  作者:zoudezhao
--  发布时间:2021/5/8 8:42:00
--  回复:(cnsjroom)回复:(zoudezhao)服务器异步路由...
1.访问路径api\\login是当你访问该服务器的api\\login时会给你映射到你的login函数上进行操作。
通俗的说就是再访问 http://127.0.0.1:3000/api/login时他会映射到该表对应的函数也就是login上
webPath再官方的定义中是静态文件使用的。也就是当你访问图片,文档类的内容时会直接通过该路径去发送文件,详细内容可以看下官方给出的解释,
http://www.foxtable.com/mobilehelp/topics/0276.htm

2.中间件的作用类似于代码复用,比如当你的控制器将路由跳转至login函数上时,中间件如果未被忽略就会先进行中间件的一个使用。比如当你访问test时, 假设你有一个auth中间件作用获取用户信息。实际的访问流程是
访问 -> auth函数(带用户信息数据至下一个函数,如果不存在可在此处截断函数禁止向下运行) -> test(args(0),args(1)),当然如果你有很多的中间件实际访问时的流程就是
访问 -> auth函数 -> auth1函数 -> auth2 函数 -> auth3函数 -> test(args(0),args(1))

假如中间件忽略了auth函数,当你访问login函数时
访问 ->login(args(0))
也就是这个函数不需要这个中间件来进行一个权限校验或者数据携带

3.HTTP服务采用官方的HTTPServer,为了方便和理解,就直接照搬的官方的属性了

4.多端口监听只是示例。考虑可能会有监听指定域名的需求才加上的。实际没有这方面需求不需要开启多个端口。开启多个端口往往需要个人进行nginx反向代理配置才能完成相关内容 可直接监听*:80 
[此贴子已经被作者于2021/5/27 9:06:23编辑过]

--  作者:zcl
--  发布时间:2021/5/24 12:18:00
--  
很好,学习
--  作者:aix
--  发布时间:2021/5/24 12:27:00
--  
 学习
--  作者:hrsoft
--  发布时间:2021/5/24 12:42:00
--  
顶一下,谢谢分享。