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


相關推薦

2024-04-24

大家好,我是你们的小助手OpsPilot,我又学会了新技能哦!在1.1.0版本中,我新增了Jenkins构建通知和KScan资产测绘能力,让我变得更强大啦!🚀 在这个版本中,我可以帮助你们更好地管理Jenkins构建。当构建出现异常的时候,我

2023-09-27

AIdea 终于在 Apple Store 恢复上架了。 大约在 4 周前,我发布了 花了小半年开发了一个 AI 套壳 APP,然而大势已过,直接开源了 这篇文章,将开发了近半年的 APP 完全开源了,感谢大家的支持,在不到一个月的时间内,Github 上

2024-08-03

我们的SaaS版公测已结束。建木Hub流水线产品正式版上线啦!!详细功能见往期文章: 「外部参数」功能已上线,速来体验 亮点功能:流水线编辑支持并行了! 亮点功能: 私有节点&组织内节点 DevOps与低代码 新增功能:

2023-09-06

w/aidea-server (即将开放) 今天最新的 1.0.4 版本发布啦,大家快来体验体验! Github Release 地址: https://github.com/mylxsw/aidea/releases/tag/1.0.4 本次更新内容如下 解决 Mac 端应用图标过大问题,现在图标大小跟大部分 A

2023-12-30

在最新发布的v2.0.0版本中,对基础框架进行了大幅优化,增加对HTTP/3的支持,进一步丰富了OpenNJet的生态,动态能力逐渐成熟。此次更新主要包括以下五个方面: 基础框架大幅优化。 框架的优化对于 CoPilots 进行了加固,

2023-11-29

  帮助文档: https://gitee.com/yhuse/SunnyUI/wikis/pages Gitee: https://gitee.com/yhuse/SunnyUI GitHub: https://github.com/yhuse/SunnyUI Nuget: https://www.nuget.org/packages/SunnyUI/ Blog: https://www.cnblogs.com/yhuse SunnyUI.Net 是基于.Net F

2023-07-19

  帮助文档: https://gitee.com/yhuse/SunnyUI/wikis/pages Gitee: https://gitee.com/yhuse/SunnyUI GitHub: https://github.com/yhuse/SunnyUI Nuget: https://www.nuget.org/packages/SunnyUI/ Blog: https://www.cnblogs.com/yhuse SunnyUI.Net 是基于

2022-10-10

  帮助文档: https://gitee.com/yhuse/SunnyUI/wikis/pages Gitee: https://gitee.com/yhuse/SunnyUI GitHub: https://github.com/yhuse/SunnyUI Nuget: https://www.nuget.org/packages/SunnyUI/ Blog: https://www.cnblogs.com/yhuse SunnyUI.Net 是基于

2023-11-23

  帮助文档: https://gitee.com/yhuse/SunnyUI/wikis/pages Gitee: https://gitee.com/yhuse/SunnyUI GitHub: https://github.com/yhuse/SunnyUI Nuget: https://www.nuget.org/packages/SunnyUI/ Blog: https://www.cnblogs.com/yhuse SunnyUI.Net 是基于.Net F

2022-07-05

  帮助文档: https://gitee.com/yhuse/SunnyUI/wikis/pages Gitee: https://gitee.com/yhuse/SunnyUI GitHub: https://github.com/yhuse/SunnyUI Nuget: https://www.nuget.org/packages/SunnyUI/ Blog: https://www.cnblogs.com/yhuse SunnyUI.Net 是基于

2023-10-28

  帮助文档: https://gitee.com/yhuse/SunnyUI/wikis/pages Gitee: https://gitee.com/yhuse/SunnyUI GitHub: https://github.com/yhuse/SunnyUI Nuget: https://www.nuget.org/packages/SunnyUI/ Blog: https://www.cnblogs.com/yhuse SunnyUI.Net 是基于.Net F

2023-09-20

  帮助文档: https://gitee.com/yhuse/SunnyUI/wikis/pages Gitee: https://gitee.com/yhuse/SunnyUI GitHub: https://github.com/yhuse/SunnyUI Nuget: https://www.nuget.org/packages/SunnyUI/ Blog: https://www.cnblogs.com/yhuse SunnyUI.Net 是基于.Net F

2023-07-18

https://www.slackware.com/announce/1.0.php Pat 为 Slackware 30 周岁发布的“庆生”纪念: Sun Jul 16 20:35:56 UTC 2023 Hey folks! It's time to acknowledge another one of those milestones... 30 (!) years since I made the post linked below announcing Slackware's first stable release

2024-01-11

📣📣sms4j 3.1.0终于发布啦!📣📣 2023年转瞬即逝,sms4j项目在这段时间里取得了令人瞩目的成就。截至目前,我们已经获得了超过1300个star,这离不开大家对sms4j项目的支持和关注,我代表整个开发团队向大家表示衷心的感谢!