magic-api magic-api
首页
  • 快速入门
  • 基础教程
  • 权限配置
  • 高级应用
  • 开发插件
  • 模块
  • 函数
  • 扩展
  • Gitee (opens new window)
  • Github (opens new window)
  • 演示 (opens new window)
  • SpringBoot配置
  • 编辑器配置
  • 2.x更新日志
  • 1.x更新日志
  • 0.x更新日志
常见问题
💖支持
交流群
首页
  • 快速入门
  • 基础教程
  • 权限配置
  • 高级应用
  • 开发插件
  • 模块
  • 函数
  • 扩展
  • Gitee (opens new window)
  • Github (opens new window)
  • 演示 (opens new window)
  • SpringBoot配置
  • 编辑器配置
  • 2.x更新日志
  • 1.x更新日志
  • 0.x更新日志
常见问题
💖支持
交流群
  • 快速入门

    • 简介
    • 快速开始
    • 请求参数获取
    • 增删改查
    • 单表crud接口
    • 分页
  • 基础教程

    • 界面简介
    • 脚本语法
    • 配置多数据源
    • 统一请求响应
    • 统一异常处理
    • 参数校验
    • 脚本调用Java
    • Java调用接口
    • 异步调用
    • 接口发布
    • Lambda
    • Linq
    • 从1.x迁移
  • 权限配置

    • UI鉴权登录
    • UI操作鉴权
    • 接口鉴权
  • 高级应用

    • 自定义拦截器
    • 自定义SQL拦截器
    • 自定义单表API拦截器
    • 自定义SQL缓存
    • 自定义模块
    • 自定义函数
    • 自定义类型扩展
    • 自定义接口存储
    • 自定义数据库方言
    • 自定义列名转换
    • 自定义脚本语言
  • 插件

    • 插件开发
    • 集群插件
    • 定时任务插件
    • Redis插件
    • Mongo插件
    • ElasticSearch插件
    • Swagger插件
    • Git插件
    • SpringDoc插件
    • nebula插件
  • 指南
  • 高级应用
mxd
2022-01-30

自定义拦截器

编写java代码如下:

/**
 * 拦截请求
 */
@Component
@Order(1) //拦截器顺序,可选
public class MyInterceptor implements RequestInterceptor {

   /*
   * 当返回对象时,直接将此对象返回到页面,返回null时,继续执行后续操作
   */
   @Override
   public Object preHandle(ApiInfo info, MagicScriptContext context, MagicHttpServletRequest request, MagicHttpServletResponse response) {
       System.out.println("请求前:" + info.getPath());
	   // 需要注意,ApiInfo 是页面上定义的信息,里面的值并不是实际请求的参数!!!
       // 拦截请求并直接返回结果,不继续后续代码
       // 需要注意的是,拦截器返回的结果不会被包裹一层json值,也不会走ResultProvider
       // return new JsonBean<>(100,"拦截器返回");
       // 放开请求,执行后续代码
       return null;
   }
   /*
    此类有多个preHandle重载方法,根据需要自行选择
   @Override
   public Object preHandle(RequestEntity requestEntity) throws Exception {
       RequestEntity 是本次请求中所有的参数信息封装的对象,可以获取实际请求参数等信息
	   return null;
   }
   */
    /**
     * 执行完毕之后执行
     * @param value 即将要返回到页面的值
     * @return 返回到页面的对象,当返回null时执行后续拦截器,否则直接返回该值,不执行后续拦截器
     */
   @Override
   public Object postHandle(ApiInfo info, MagicScriptContext context, Object value, MagicHttpServletRequest request, MagicHttpServletResponse response) {
	   // 需要注意,ApiInfo 是页面上定义的信息,里面的值并不是实际请求的参数!!!
       System.out.println("请求后:" + info.getPath());
       System.out.println("返回结果:" + value);
       // 拦截请求并直接返回结果,不继续后续代码
       // 需要注意的是,拦截器返回的结果不会被包裹一层json值,也不会走ResultProvider
       // return new JsonBean<>(100,"拦截器返回");
       // 放开请求,执行后续代码
       return null;
   }

   /*
   此类有多个postHandle重载方法,根据需要自行选择
   @Override
   public Object postHandle(RequestEntity requestEntity, Object returnValue) throws Exception {
       RequestEntity 是本次请求中所有的参数信息封装的对象,可以获取实际请求参数等信息
	   return null;
   }
   */
}
上次更新: 2025-05-03 23:57:14
接口鉴权
自定义SQL拦截器

← 接口鉴权 自定义SQL拦截器→

Theme by Vdoing | Copyright © 2020-2025 ssssssss.org | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×