You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring框架中如何排除含API的URL调用指定控制器方法?

实现URL不含"api"时调用指定方法的方案

针对你的需求,有两种简单易上手的实现方式,适合Spring新手:

方式一:正则表达式路径匹配(推荐)

利用Spring支持的正则路径匹配语法,直接通过@RequestMapping匹配所有不包含"api"的URL,同时保留原有API请求的处理逻辑:

@Controller 
public class RouterController { 

    // 处理所有以/api开头的请求
    @RequestMapping("/api/**") 
    public String apiApp() { 
        // 原有API请求的处理逻辑
        ...
    }

    // 处理所有不包含"api"的请求
    @RequestMapping(value = "{**path:^(?!.*api).*$}")
    public String nonApiHandler() { 
        // 你需要调用的指定方法逻辑
        ...
        return "your-target-view";
    }
}

说明

  • {**path:^(?!.*api).*$}是Spring的特殊路径匹配写法:
    • **表示匹配任意层级的URL路径;
    • ^(?!.*api).*$是正则的负向预查规则,确保整个URL中不包含"api"子串;
  • Spring的路径匹配有优先级,更具体的/api/**会先匹配,避免冲突。

方式二:全局请求拦截判断

如果觉得正则写法不好理解,可以用全局匹配+代码判断的方式:

@Controller 
public class RouterController { 

    // 匹配所有请求
    @RequestMapping("/**") 
    public String handleAllRequests(HttpServletRequest request) { 
        String requestUrl = request.getRequestURI();
        // 判断URL是否包含api
        if (requestUrl.contains("api")) {
            // 包含api时,转发到原有API处理方法
            return "forward:/api";
        }
        // 不包含api时执行你的逻辑
        ...
        return "your-target-view";
    }

    // 原有API处理方法
    @RequestMapping("/api/**") 
    public String app() { 
        ...
    }
}

内容的提问来源于stack exchange,提问作者Doppu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 07:51:17