spring boot controller 增加指定前缀的两种方法

Spring Controller原理与最佳实践:从MVC设计到Spring Boot 3.x落地 Spring Controller是Spring MVC架构中承接HTTP请求的核心组件,其本质是MVC模式在Java Web中的工程化实现,通过DispatcherServlet、HandlerMapping与HandlerAdapter协同完成请求路由、参数绑定与响应渲染。它并非简单注解标记,而是承担协议适配、数据契约定义与入口守门职责的关键层。理解@Controller与@RestController的语义差异、@RequestParam/@PathVariable/@RequestBody的协议层级 阅读详情

1、增加配置

server.servlet.context-path: /api
这种是最常见的,加上这个配置后,所有的url,必须带上/api的前缀,才能访问到该url

2、过滤拦截

这种是加上/api也可以访问,不加/api也可以访问,适合项目重构修改的适合用


import org.apache.commons.lang.StringUtils;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;


@Configuration
@Order(1)
@WebFilter(filterName = "urlFilter", urlPatterns = "/api/*")
public class UrlFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        String servletPath = httpRequest.getServletPath();
        if (StringUtils.isNotBlank(servletPath) && servletPath.startsWith("/api")) {
            String newPath = servletPath.substring(4);
            request.getRequestDispatcher(newPath).forward(request, response);
        } else {
            chain.doFilter(request, response);
        }
    }

    @Override
    public void destroy() {

    }
}
spring boot配置jsp spring-boot中jsp的使用 jsp是之前在学习java开发中会学习到的知识,虽然现在公司中虽然使用jsp越来越少,但是spring-boot配置jsp的使用还是应该去记录一下。 相关依赖增加 这里要加入一些依赖: <dependency> <groupId>org.springframework.boot</groupId> <ar 阅读详情

相关推荐

Spring Boot 修改请求url

背景介绍 在做后端API接口的时候,被前端同事吐槽以前的接口URL没有遵循Restful API 规范,所以开会讨论,最终拍板确定,新做的要接口定义要照着标准规范来。 找了找关于Restful API的文章,还是这位大佬说的容易理解: www.ruanyifeng.com/blog/2014/0… 里面讲到了API的版本号。 这里跟组员协商确定后,URL要也同样要突出版本号。所以在某个版本阶段开发的API接口,要指明URL的版本号。 在实际代码中,发现如下问题: 如果把"v1"这类词直接写到

weixin_64314555的博客 2464

springboot存图片到本地并生成url/映射静态资源路径

springboot存图片到本地并生成url/映射静态资源路径

m0_61865063的博客 2161

SpringBoot开发——给所有Controller接口添加统一前缀的5种方式

SpringBoot开发——给所有Controller接口添加统一前缀的5种方式

bjzhang75的博客 2330

springboot 前缀_SpringBoot自动加载路由前缀

@RequestMapping() 将controller注册到容器中时需要加入路由地址,如果项目层数较深,地址会非常的长,并且有很多一样的路由前缀,每写一个controller都要重复一遍非常的麻烦,既然Spring这么强大,有没有什么机制可以自动生成路由前缀?思路:如何可以在@RequestMapping中不加URL前缀------>我们可以让配置类自动加入前缀既然用@RequestMa...

weixin_36267013的博客 2527

智能座舱测试工程师必看:从零搭建自动化测试框架的5个实战技巧

本文为智能座舱测试工程师提供从零搭建自动化测试框架的5个实战技巧,涵盖环境搭建、ADB高级应用、Python脚本工程化、Monkey测试优化及性能调优。通过ADB深度操作和Python脚本封装,帮助测试人员构建高可复用的智能座舱测试解决方案,显著提升测试效率与问题发现率。

python9snake的博客 634

2024年全国大学生电子设计竞赛A题_AC-AC变换电路并联运行

AC-AC变换电路并联运行(A 题)【本科组】

qq_74395263的博客 7836

在 Spring 中设置统一的 URL前缀

如果仍然出现找不到bean类型为 PathMatcher 的错误,请确保已经引入了正确版本号的spring-webmvc依赖项(例如Maven依赖项),并且没有其他与其版本号不兼容的依赖项干扰应用程序启动过程。要解决此问题,可以尝试添加一个实现了WebMvcConfigurer接口的类,并重写configurePathMatch()方法。然后,在configurePathMatch()方法内部,我们调用configurer参数的addPathPrefix()方法添加URL前缀即可。

2201_75808326的博客 2066

鸿蒙【ArkTS】使用TS装饰器封装网络请求HTTP

在HarmonyOS应用开发中,通过HTTP访问网络,可以使用官方提供的@ohos.net.http模块。但是官方提供的直接使用不太好使用,需要封装下才好。这里采用TS的装饰器实现AOP效果 完成前后端接口风格的统一

weixin_60376559的博客 5609

springboot 前缀_SpringBoot2.x 给Controller的RequestMapping添加统一前缀

如何给Controller的RequestMapping添加统一前缀,比如"/api",为什么要添加统一访问前缀,其实是为了后面的接口的管理。切记:约定与规范好过一切技术处理 !比如:项目A必须所有访问接口URL必须增加 /api/projectA/项目B必须所有访问接口URL必须增加 /api/projectB/看到url里面含有/api 表示访问后端接口服务,/projectA/ 一看就知道是...

weixin_29229989的博客 1466

智能制造 | 如何快速自动生成站位表及自动与BOM校验?

一、站位表(SMT行业中)是SMT上料防错的基础信息,用于对需上料物料与产线、贴片机位置、飞达规格型号、用量,建立基础资料。 SMT站位表是否正确? 首先需要人工确认站位表与SMT程序的是否符合,上料员依照站位表安装好后,确认人员需有第三方确认者 (品管确定)核对。 站位表内容包括什么? 站位表内容为:SMT站位号相对应的物料编码,元件位号,飞达大小/间距,数量等等,根据不同公司的要求而定义。 就目前来说,基本每一款贴片机都可以输出站位清单 但对于企业来说,直接输出的站位清单一般不直接使用,需要进行手动处理

vayoinfo111的博客 4942

深入排查127.0.0.1拒绝连接:从端口占用到Tomcat服务启动的完整解决方案

本文针对开发者访问127.0.0.1时遭遇“拒绝连接”的常见问题,提供了一套完整的排查与解决方案。文章从端口占用检查入手,详细讲解了使用netstat命令识别进程,并深入分析了服务监听地址、IPv6配置、防火墙以及Tomcat服务安装与启动等核心环节。通过实战演练,指导读者系统性地解决从网络层到应用层的各类连接问题,最终确保本地服务成功运行并可通过本地回环地址正常访问。

weixin_29279047的博客 3186

关于springboot中取相对路径的方法,和拼接字符串(采用thymeleaf引擎模板的方式)

<img th:src="${#httpServletRequest.getScheme()+'://'+#httpServletRequest.getServerName()+':'+#httpServletRequest.getServerPort()+#httpServletRequest.getContextPath()+'/files/'}+${userinfo.getUserImg()}"/> 这里的${#httpServletRequest.getScheme()+'://...

qq_44810785的博客 1683

30 中望CAD二次开发(ZRX C++)-windows下的qt开发

本文介绍了中望CAD在windows下,如何使用qt开发插件界面,给出了具体的编码步骤,并生成了模态对话框和非模态对话框,其中非模态对话框可以调用CAD命令,实现交互操作。

cilvsuanna的博客 189

SpringBoot2.x 给Controller的RequestMapping添加统一前缀

如何给Controller的RequestMapping添加统一前缀,比如"/api",为什么要添加统一访问前缀,其实是为了后面的接口的管理。 切记:约定与规范好过一切技术处理 ! 比如: 项目A必须所有访问接口URL必须增加 /api/projectA/ 项目B必须所有访问接口URL必须增加 /api/projectB/ 看到url里面含有/api 表示访问后端接口服务,/projectA/...

gzt19881123的专栏 2万+

从原理到落地:Java+TensorRT打造YOLO模型GPU极致推理方案

Java+TensorRT的YOLO模型GPU加速方案,核心是通过JNI桥接实现Java与TensorRT的高效交互,结合TensorRT的底层优化能力,最大化GPU算力。该方案既保留了Java后端的工程化优势(如易维护、生态完善),又解决了AI模型推理的性能瓶颈,可落地于实时视频分析、智能监控、工业质检等场景。基于TensorRT Dynamic Shape实现多尺寸输入的自适应优化;结合Java的协程(Virtual Thread)提升异步推理的并发效率;

2601_94871597的博客 766

即插即用系列(代码实践)| GRSL 2024 ARConv核心模块:自适应矩形卷积——专为遥感图像设计,打破固定方形卷积束缚

摘要: 本文提出了一种用于遥感图像处理的自适应矩形卷积模块(ARConv),解决了传统方形卷积核在处理复杂几何结构(如细长道路、密集建筑物)时导致的光谱混叠和边缘模糊问题。ARConv通过动态调整卷积核的长宽比和旋转角度,使卷积核形状与地物特征自适应匹配。该模块可即插即用于全色锐化、语义分割等遥感任务,有效提升边缘保持能力和光谱保真度。核心代码基于PyTorch实现,包含偏移量生成和几何变换逻辑,支持梯度缩放以稳定训练。

分享顶会顶刊论文即插即用模块 140

告别硬编码!Spring Boot 优雅实现 Controller 路径前缀统一管理

本文介绍了如何通过实现 WebMvcConfigurer 接口优雅地为 Spring Boot 控制器添加统一路径前缀。主要方法是通过 configurePathMatch 方法为不同模块的控制器配置不同前缀,支持基础用法、按包名区分前缀以及自定义注解方式。相比在每个控制器手动拼接前缀,这种方法使配置更集中、代码更简洁、模块划分更清晰,且兼容 Swagger 文档。适用于 Spring Boot 3.x 和 4.x 版本,是统一管理控制器路径前缀的推荐方案。

千木一枝的博客 336

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【Spring Boot】控制器Controller方法

在 Spring Boot 中,使用注解来声明一个类是 Controller。示例代码// 方法注解说明@RestController 告诉Spring,这是一个用于RESTful API 的控制器,所有方法的返回值都会自动转为 JSON。@RequestMapping 定义该控制器的公共请求前缀。

KRADDDD的博客 474

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Spring Boot Controller测试:Postman与MockMvc的选型与实践指南

在Web服务开发中,API接口的稳定性和正确性是保障系统质量的关键。Controller层作为HTTP请求的入口,其测试验证涉及从请求参数解析、业务逻辑调用到响应组装的全链路。单元测试与集成测试是两种核心的软件测试方法,前者关注模块内部逻辑的快速验证,后者则确保各组件协同工作的正确性。在Spring Boot生态中,MockMvc框架通过模拟HTTP请求与响应,支持对Controller进行细粒度的单元测试,能快速验证参数绑定、数据校验等逻辑;而Postman作为API客户端工具,则擅长模拟真实网络请求,用

weixin_33816946的博客 399

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

springboot项目给所有controller的请求路径统一加前缀路径的两种方式

1 server.servlet.context-path=/xxx 这种方式是给项目所有请求加的全局路径,包括controller层的请求和静态文件的请求。 2 只对controller的后端接口请求生效,不对同一个项目中的竞态文件生效的方式如下: PathConfig.java /** * 配置统一的后台接口访问路径的前缀 */ @Configuration public class PathConfig implements WebMvcConfigurer { @Autowired

qq_34850932的博客 7046

springboot学习(七十六) springboot中为多个controller添加统一访问URL的前缀

在某些情况下,服务的controller中前缀是一致的,例如所有URL的前缀都为/context-path/api/v1,需要为某些URL添加统一的前缀。能想到的处理办法为修改服务的context-path,在context-path中添加api/v1,这样修改全局的前缀能够解决上面的问题,但存在弊端,如果URL存在多个前缀,例如有些URL需要前缀为api/v2,就无法区分了,如果服务中的一些静态资源不想添加api/v1,也无法区分。下面通过自定义注解的方式实现某些URL前缀的统一添加。

文若书生的专栏 5201

Spring-boot中读取config配置文件的两种方式

Spring-Boot的核心配置文件application.properties,当然也可以通过注解自定义配置文件的信息。 Spring-Boot读取配置文件的方式: 一.读取核心配置文件信息application.properties的内容 核心配置文件是指在resources根目录下的application.properties或application.yml配置文件,读...

yinni11的博客 1887

Spring Boot 入门

Spring Boot入门,构建项目,认识Startar ,自定义banner

qq_57570052的博客 1044

Spring Boot 接口统一前缀 path-prefix

需求如题,想给一个 spring boot 项目的所有请求路径添加统一前缀,可以通过 context-path 来配置。但是在同时存在静态资源和 Controller 接口的项目中,如果希望静态资源从根路径访问,并且所有接口拥有统一路径前缀,则需要通过 Spring 层面来解决这个问题(context-path 是 web 容器层面的,如果配置它则会把静态资源都包含进去)。如上URL示例中,希望放在 springboot 根目录 static 中的静态资源能直接通过根路径访问。也可以是多级路径,例如。

小单的博客专栏 9703
上一篇: RabbitMQ和Kafka选型用哪个
下一篇: 错误记录:Current request is not a multipart request
zhangSir134
博客等级 码龄9年 7969粉丝 246原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值