SpringBoot实现接口统一前缀

 更新时间:2023年07月25日 10:08:15   作者:catoop  
本文主要介绍了SpringBoot实现接口统一前缀,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

需求

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

如下接口示例:

# 3个静态资源
http://localhost:8080/index.html
http://localhost:8080/home.js
http://localhost:8080/dog.png

# 3个统一前缀为 /api
http://localhost:8080/api/test/show
http://localhost:8080/api/test/display
http://localhost:8080/api/test/print

如上URL示例中,希望放在 springboot 根目录 static 中的静态资源能直接通过根路径访问。其他 Controller 接口的前缀 “/api” 可以在配置文件中自定义配置变更。

实现

实现方法很简单,如下代码和配置文件:

1、GlobalControllerPathPrefixConfiguration.java

package com.example.demospringbean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
 * 为 Controller 接口配置统一前缀
 *
 * @author shanhy
 * @date 2023-03-20 15:50
 */
@Configuration
public class GlobalControllerPathPrefixConfiguration implements WebMvcConfigurer {
    @Value("${spring.controller.path-prefix:}")
    private String pathPrefix;
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        configurer.addPathPrefix(pathPrefix, c -> c.isAnnotationPresent(RestController.class));
    }
}

2、application.properties

spring.controller.path-prefix=/api

配置文件中参数 spring.controller.path-prefix 也可以是多级路径,例如 /api/demo。

3、TestController.java

/**
 * 接口示例
 * 
 * @author shanhy
 * @date 2023-03-20 15:49
 */
@RestController
@RequestMapping("/test")
public class TestController {
    @GetMapping("/show")
    public String show(){
        return "OK";
    }
}

最后将 dog.png 放在 springboot 项目的 static 目录中用来测试。

验证

打开浏览器分别访问如下路径可以正常显示结果,表示成功。

http://localhost:8080/dog.png
http://localhost:8080/api/test/show

到此这篇关于SpringBoot实现接口统一前缀的文章就介绍到这了,更多相关SpringBoot 接口统一前缀内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中数组协变和范型不变性踩坑记录

    Java中数组协变和范型不变性踩坑记录

    数组的协变性来源于数组的一个优势,这篇文章主要给大家介绍了关于Java中数组协变和范型不变性踩坑的一些内容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • IDEA-SpringBoot项目Debug启动不了(卡住不动)的原因分析

    IDEA-SpringBoot项目Debug启动不了(卡住不动)的原因分析

    这篇文章主要介绍了IDEA-SpringBoot项目Debug启动不了(卡住不动)的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • mybatis 逆向生成后遵循java驼峰法则的解决

    mybatis 逆向生成后遵循java驼峰法则的解决

    这篇文章主要介绍了mybatis 逆向生成后遵循java驼峰法则的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Java日常练习题,每天进步一点点(45)

    Java日常练习题,每天进步一点点(45)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • springboot手动事务回滚的实现代码

    springboot手动事务回滚的实现代码

    这篇文章主要介绍了springboot手动事务回滚的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 通过实例解析java String不可变性

    通过实例解析java String不可变性

    这篇文章主要介绍了通过实例解析java String不可变性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • java中实现汉字按照拼音排序(示例代码)

    java中实现汉字按照拼音排序(示例代码)

    这篇文章主要是对java中将汉字按照拼音排序的实现代码进行了详细的分析介绍。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • += 和 ++ 操作符区别简单介绍

    += 和 ++ 操作符区别简单介绍

    这篇文章主要介绍了+= 和 ++ 操作符区别简单介绍的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • springboot logback如何从apollo配置中心读取变量

    springboot logback如何从apollo配置中心读取变量

    这篇文章主要介绍了springboot logback如何从apollo配置中心读取变量的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 关于JDK8中的字符串拼接示例详解

    关于JDK8中的字符串拼接示例详解

    字符串拼接问题应该是每个Java程序员都熟知的事情了,几乎每个Java程序员都读过关于StringBuffer/StringBuilder来拼接字符串。下面这篇文章主要给大家介绍了关于JDK8中的字符串拼接的相关资料,需要的朋友可以参考下。
    2018-04-04

最新评论