创建一个类 实现 BaseInterceptor接口,如下图:

用这个注解去声明拦截器 @MarsInterceptor(pattern = "*")

pattern 为拦截规则,全部拦截 配置 * 即可,否则的话,必须以 / 开头

@MarsInterceptor(pattern = "/demo*") // 这个实例表示拦截所有demo开头的接口
public class LoginInters implements BaseInterceptor {

    // API执行前执行这个方法
    public Object beforeRequest(HttpMarsRequest httpMarsRequest, HttpMarsResponse httpMarsResponse) {
        return SUCCESS;
    }

    // API执行后执行这个方法,参数obj是接口的返回值
    public Object afterRequest(HttpMarsRequest httpMarsRequest, HttpMarsResponse httpMarsResponse, Object obj) {
        return SUCCESS;
    }

    /**
     * 由于这个拦截是拦截所有demo开头的接口
     * 所以如果在一堆demo开头的接口里,有两个接口叫demoA和demoB,那他们肯定也会被拦截
     * 但是我们想放这两个接口过,不拦截,这时候就可以采用下面的方法去配置
     */
    public List<String> exclude() {
        在这个方法里返回这个拦截器不拦截的URL,/开头
        本示例表示,demoA,demoB 直接通过,不拦截
        List<String> urls = new ArrayList<String>();
        urls.add("/demoA");
        urls.add("/demoB");
        return urls;
    }
}

如果拦截器顺利放行的话,返回SUCCESS就好了,如果不给通过,那么直接返回 错误提示信息(如果返回对象会自定转成json)。

results matching ""

    No results matching ""