Magician-Route 发布啦
Magician-Route是Magician的官方web组件,由Magician-Web发展而来的新项目,主要是去掉了里面的反射,牺牲了一点易用性,将侧重点放在了性能上,两者的区别主要在于路由和拦截器的创建方式上。
Magician-Web 依然会继续维护,如果大家对反射的性能不是特别抗拒,而且更喜欢Magician-Web的风格,大可放心使用。
创建路由
由注解的形式改成了 传参的形式,每一次的请求都不再需要通过反射来执行了路由了,性能得到了有效提升
- 这样的类可以创建多个,根据你的需求 将路由分开创建
- 每个路由内部,如果没有特别的需要 就不需要加try-catch,框架内部做了处理,一旦发生异常,会将异常信息以json的形式响应给客户端
- 直接返回需要响应的对象,框架会自动转成json并返回给客户端,你也可以采用如下示例中“Magician的原生响应方式” 将数据返回给客户端,具体可以看Magician文档的《响应参数》
@Route public class DemoRoute implements MagicianInitRoute { @Override public void initRoute(MagicianRouteCreate routeCreate) { routeCreate.get("/demo/getForm", request -> { return "{\"msg\":\"hello login\"}"; }); // Magician的原生响应方式 routeCreate.get("/demo/getForm2", request -> { request.getResponse().sendJson("{\"msg\":\"hello login\"}"); return null; }); routeCreate.post("/demo/json", request -> { DemoResponseVo demoResponseVo = new DemoResponseVo(); demoResponseVo.setName("Beerus"); return demoResponseVo; }); } }
将参数转化为实体对象
如果你想让实体类顺利的接收到参数,并且让参数验证生效,那么必须做如下步骤, 这种方式 底层是用的反射,如果你无法接受反射的性能,那么可以不用这种方式,选择权在你自己
- 只转化
routeCreate.get("/demo/getForm", request -> { DemoVO demoVO = ConversionUtil.conversion(request, DemoVO.class); return "{\"msg\":\"hello login\"}"; });
- 转化+参数验证
如果验证失败,conversionAndVerification 方法会抛出一个异常,这个异常会自动被响应给客户端,不需要开发者处理
routeCreate.get("/demo/getForm", request -> { DemoVO demoVO = ConversionUtil.conversionAndVerification(request, DemoVO.class); return "{\"msg\":\"hello login\"}"; });
如果你想获取到验证失败的提示信息 自己处理,可以用这种方式
routeCreate.get("/demo/getForm", request -> { try { DemoVO demoVO = ConversionUtil.conversionAndVerification(request, DemoVO.class); } catch(VerificationException e){ // 这个就是 验证失败的提示信息 String msg = e.getMessage(); } return "{\"msg\":\"hello login\"}"; });
创建拦截器
跟路由一样,这种类也可以创建多个,根据你的需求 分开创建拦截器
- 第一个参数为拦截规则,全部拦截 配置 * 即可,否则的话,必须以 / 开头
- 如果拦截器顺利放行的话,返回SUCCESS就好了,如果不给通过,那么直接返回 错误提示信息(返回对象会自定转成json)
@Interceptor public class DemoInter implements MagicianInitInterceptor { @Override public void initInterceptor(MagicianInterceptorCreate interceptorCreate) { interceptorCreate.addInterceptor("/demo/*", new MagicianInterceptor() { @Override public Object before(MagicianRequest magicianRequest) { System.out.println("进入了拦截器"); return SUCCESS; } @Override public Object after(MagicianRequest magicianRequest, Object o) { return SUCCESS; } }); interceptorCreate.addInterceptor("/*/form", new MagicianInterceptor() { @Override public Object before(MagicianRequest magicianRequest) { System.out.println("进入了拦截器2"); return SUCCESS; } @Override public Object after(MagicianRequest magicianRequest, Object o) { return SUCCESS; } }); } }
可以访问官网了解更多:https://magician-io.com

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Alluxio 2.9 新版发布 | 重塑架构,支持大规模多租户环境
/ Alluxio宣布正式发布数据编排平台2.9版本 / Alluxio 2.9 版本的主要新增功能包括: 新增跨环境集群同步功能、增强Alluxio在Kubernetes上的可管理性、提高S3 API 安全性和用户体验 2022年11月17日,全球首创的开源数据编排软件开发商Alluxio宣布正式发布数据编排平台2.9版本,新版本立即可用。2.9版本进一步强化了Alluxio作为计算引擎和存储系统中间层的关键地位。新功能包括:增加跨环境集群同步功能,支持横向扩展的多租户架构;显著改进在Kubernetes上部署的工具集和指南,增强Alluxio的易管理性;以及通过优化S3 API 和 POSIX API 实现安全性和性能提升。 本次,Alluxio 2.9 社区版和企业版更新中,包含3大重磅功能 Alluxio 2.9版本增加了跨环境同步功能。这个功能让不同的Alluxio集群之间知道各自对于元数据的修改情况,从而自动保持元数据同步。在任何环境中部署Alluxio集群都可以实现租户级隔离,同时可以确保Alluxio集群中的海量元数据处于同步状态。当部署多集群架构时,此功能尤其有用,属...
- 下一篇
OCaml 5.0.0 发布首个 Beta 测试版
在推出两个 Alpha 版本之后,OCaml 5.0.0 发布了首个 Beta 测试版。目前标准库已达到稳定状态,离正式版的发布越来越近。与上一个 alpha 相比,首个 Beta 版本包含许多小型的内部 runtime 修复补丁,尤其是在 systhreads 库中。 在用户层面,Domain 和 Effect 模块的接口已经被调整为更加向前兼容: 与 effects 相关的异常现在在 Effecŧ 模块中进行定义 Domain.recommended_domain_count值不再是常量,Domain.at_each_spawn函数已被删除 标准库变更: #11309,#11424,#11427, +#11545: 添加 Domain.recommended_domain_count. #11423: 将 effect exceptions 移动到 Effect module #11593: 移除 Domain.at_each_spawn 根据此前的报道,由于 OCaml 5.0 完全重写了 OCaml 运行时,其本身预计将是一个比平时更具实验性的版本。值得注意的是,原生编译器将仅...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块