com.gitee.easyopen.interceptor.ApiInterceptor Maven / Gradle / Ivy
package com.gitee.easyopen.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.gitee.easyopen.ApiMeta;
/**
* 拦截器,原理同springmvc拦截器
* @author tanghc
*
*/
public interface ApiInterceptor {
/**
* 预处理回调方法,在方法调用前执行。返回false不继续向下执行,此时可使用response返回错误信息
* @param request
* @param response
* @param apiMeta 接口元数据
* @param argu 方法参数
* @return 返回false不继续向下执行,此时可使用response返回错误信息
* @throws Throwable
*/
boolean preHandle(HttpServletRequest request, HttpServletResponse response, ApiMeta apiMeta, Object argu)
throws Throwable;
/**
* 接口方法执行完后调用此方法。
* @param request
* @param response
* @param apiMeta 接口元数据
* @param argu 参数
* @param result 方法返回结果
* @throws Throwable
*/
void postHandle(HttpServletRequest request, HttpServletResponse response, ApiMeta apiMeta, Object argu,
Object result) throws Throwable;
/**
* 结果包装完成后执行
* @param request
* @param response
* @param apiMeta 接口元数据
* @param argu 参数
* @param result 最终结果,被包装过
* @param e
* @throws Throwable
*/
void afterCompletion(HttpServletRequest request, HttpServletResponse response, ApiMeta apiMeta, Object argu,
Object result, Throwable e) throws Throwable;
/**
* 匹配拦截器,返回true则执行该拦截器,否则忽略该拦截器
* @param apiMeta 接口信息
* @return 返回true,使用该拦截器,返回false跳过不使用。
*/
boolean match(ApiMeta apiMeta);
}