后端拦截器
基于拦截器模式的 HTTP 请求处理组件,提供在请求处理前后自动执行业务逻辑的能力,支持权限验证、参数校验、日志记录、异常处理等横切关注点的统一管理。
拦截器元素分层结构为 Meta(interceptors.Meta) → Type(interceptors.Http) → 实例,仅支持全代码方式创建。
快速开始
创建实例元素
目录结构
推荐后端拦截器元素目录结构
interceptors/
└── MyInterceptor/
├── e.json
├── __init__.py
├── interceptor.py
└── handler.py (可选)
e.json 文件
后端拦截器 e.json 示例
{
"title": "自定义拦截器",
"type": "interceptors.Http",
"backendBundleEntry": ".",
"icon": "lanjieqi1",
"sort": 100
}
业务逻辑代码
interceptor.py 实现
from interceptors.Http import RequestInterceptor
from jit.commons.utils.logger import log
class MyInterceptor(RequestInterceptor):
def before(self):
"""请求处理前执行"""
log.info(f"请求开始: {self.request.path}")
def after(self, resData=None):
"""请求处理后执行"""
log.info(f"请求结束: {self.request.path}")
def onSuccess(self, resData=None):
"""请求处理成功时执行"""
log.info("请求处理成功")
def onException(self, exc=None):
"""请求处理异常时执行"""
log.error(f"请求处理异常: {exc}")
return exc
方法
before
请求处理前执行的方法,用于参数校验、权限检查等预处理逻辑。
after
请求处理后执行的方法,无论成功或失败都会执行,用于清理资源、记录日志等后处理逻辑。
onSuccess
请求处理成功时执行的方法,仅在没有异常时调用。
onException
请求处理异常时执行的方法,用于异常处理和日志记录。
属性
request
当前 HTTP 请求对象,包含请求路径、参数、头信息等。
functionDefine
当前请求对应的函数定义信息,通过解析请求路径获取目标元素的函数元数据。
高级特性
执行顺序
通过 e.json 中的 sort 字段控制拦截器执行顺序。
设置执行顺序
{
"title": "高优先级拦截器",
"type": "interceptors.Http",
"sort": 10
}
同时存在多个拦截器?
- 在请求到达时,按照 sort 升序执行 before
- 在请求结束时,按照 sort 升序执行 onException、onSuccess
- 在请求结束时,按照 sort 降序执行 after
平台内置拦截器
登录状态拦截器(interceptors.Auths
sort=1):当e.json的functionList中为某个函数配置了loginRequired=false时,会忽略对该函数的登录状态校验。
API 请求日志记录(interceptors.Logger
sort=9980)
用户角色权限校验(interceptors.Permission
sort=999)
请求验签(interceptors.Sign
sort=100):当e.json的functionList中为某个函数配置了ignoreSign=true时,会忽略对该函数的验签。
XML 请求体转 Dict(interceptors.XmlParse
sort=999)