如何给Controller的RequestMapping添加统一前缀,比如"/api",为什么要添加统一访问前缀,其实是为了后面的接口的管理。

切记:约定与规范好过一切技术处理 !

比如:

项目A必须所有访问接口URL必须增加 /api/projectA/

项目B必须所有访问接口URL必须增加 /api/projectB/

看到url里面含有/api 表示访问后端接口服务,/projectA/ 一看就知道是项目A提供的服务接口。

总结一下 有几个方法

在配置application.yml文件中添加:

servlet:

context-path: /api #(不同SpringBoot版本会有区别,这里是采用2.x)

但是这个其实是整个项目访问前缀,如果你有静态资源也需要增加 /api 这个前缀访问。

通过nginx 和 你的网关层 添加统一的访问路径前缀,这个不多说了。

springMVC 可以实现 WebMvcConfigurer 接口中的 configurePathMatch 方法来实现添加统一路径前缀。

package com.middol.webbase.framework.config;

import com.middol.webbase.framework.annotation.ApiRestController;

import com.middol.webbase.framework.annotation.ReportRestController;

import com.middol.webbase.framework.properties.ApiPathProperties;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import javax.annotation.Resource;

/** * 配置统一的后台接口访问路径的前缀 * @author C西 */

@Configuration

public class MyWebMvcConfig implements WebMvcConfigurer {

@Resource

private ApiPathProperties apiPathProperties;

@Override

public void configurePathMatch(PathMatchConfigurer configurer) {

configurer

.addPathPrefix(apiPathProperties.getGlobalPrefix(),c -> c.isAnnotationPresent(ApiRestController.class))

.addPathPrefix(apiPathProperties.getReportPrefix(),c -> c.isAnnotationPresent(ReportRestController.class));

}

}

意思是 对有 @ApiRestController 注解的 controller 添加 /api前缀,对有@ReportRestController 注解的controller添加 /api/report 前缀。

@ApiRestController 和 @ReportRestController 是自定义注解继承 @RestController注解。

package com.middol.webbase.framework.annotation;

import org.springframework.core.annotation.AliasFor;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import java.lang.annotation.*;

/** * controller层统一使用该注解 * @author C西 */

@Target(ElementType.TYPE)

@Retention(RetentionPolicy.RUNTIME)

@Documented

@RestController

@RequestMapping

public @interface ApiRestController {

/** * Alias for {@link RequestMapping#name}. */

@AliasFor(annotation = RequestMapping.class)

String name() default "";

/** * Alias for {@link RequestMapping#value}. */

@AliasFor(annotation = RequestMapping.class)

String[] value() default {};

/** * Alias for {@link RequestMapping#path}. */

@AliasFor(annotation = RequestMapping.class)

String[] path() default {};

}

然后 你的业务controller 层代码添加 @ApiRestController 即可,如下:

@Api(value = "DemoUser增删改查接口", tags = "【测试接口】")

@ApiRestController("demoUser")

public class DemoUserController extends BaseController{

}

其中 ApiPathProperties 是统一前缀名称管理,可以在yml中修改,我这里设置了两个 一般的CRUD接口 /api , 报表服务接口 统一为 /api/report,各自看各自服务定到底设置几个。

package com.middol.webbase.framework.properties;

import lombok.Data;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.stereotype.Component;

/** * 接口路径前缀配置 * @author C西 */

@Component

@ConfigurationProperties(prefix = "api.path")

@Data

public class ApiPathProperties {

String globalPrefix = "api";

String reportPrefix = "api/report";

}

application.yml文件中添加如下

## 专门针对 Controller层接口路径前缀全局配置

api:

path:

global-prefix: api

report-prefix: api/report

springboot 前缀_SpringBoot2.x 给Controller的RequestMapping添加统一前缀相关推荐

  1. springboot 前缀_SpringBoot + 指定包下所有控制器 + 添加统一前缀

    SpringBoot + 指定包下所有控制器 + 添加统一前缀 自定义版本控制器接口定义 提供两个方法,一个方法是需要添加url前缀的控制器所属的包名称,一个是需要添加的url前缀. /** * 版本 ...

  2. Java:SpringBoot给Controller添加统一路由前缀

    网上的文章五花八门,不写SpringBoot的版本号,导致代码拿来主义不好使了. 本文采用的版本 SpringBoot 2.7.7 Java 1.8 目录 1.默认访问路径 2.整个项目增加路由前缀 ...

  3. Spring Boot 接口统一前缀

    需求 需求如题,想给一个 spring boot 项目的所有请求路径添加统一前缀,可以通过 context-path 来配置.但是在同时存在静态资源和 Controller 接口的项目中,如果希望静态 ...

  4. 如何批量添加文件名前缀?

    如何批量添加文件名前缀?我们每个人在平时可能会遇到各种不同的工作,并且每项工作会产生大量的文件,电脑里的文件多了就会产生混淆,为了更好的管理这些不同项目中涉及到的文件,我们可以给相同项目的文件的名称前 ...

  5. Window批量添加文件名前缀

    在Windows系统中,有时我们需要给多个文件添加相同的前缀,可以使用以下方式进行处理. 在需要添加前缀的文件的同级目录下,新建一个记事本 .txt 文件,然后将下面的代码复制到记事本里面,把&quo ...

  6. Spring MVC中@Controller和@RequestMapping注解详解

    在<第一个Spring MVC应用>教程中创建了两个传统风格的控制器,它们是实现 Controller 接口的类.传统风格的控制器不仅需要在配置文件中部署映映射,而且只能编写一个处理方法, ...

  7. Spring中Controller和RequestMapping的详解

    先看一个简单的实例: @Controller @RequestMapping("/hello") public class anyTypeController{@RequestMa ...

  8. springmvc常用注解之@Controller和@RequestMapping

    对于各种注解而言,排第一的当然是"@Controller",表明某类是一个controller. "@RequestMapping"请求路径映射,如果标注在某个 ...

  9. springboot项目访问不到controller方法。

    问题描述:springboot项目访问不到controller方法. [分析] 应该是springboot并没有扫描到controller. [查看日志] 记录此时的日志输出 /Library/Jav ...

最新文章

  1. 36 岁开发者应聘被拒,这 3 位 50 岁程序员的生存秘籍送给你!
  2. goaccess在定时任务中不执行的问题
  3. Day03——Python函数
  4. stm32 JTag 错误
  5. 在eclipse中输入.后提示解决
  6. 在将计算机技术应用于会计工作的初期,所开发的会计核算软件主要用于,电算化考前试七.doc...
  7. react 遍历对象_探索:跟随《Build your own React》实现一个简易React
  8. 计算机中国象棋书籍,[建议]中国的象棋永远不能被没有“思维”的电脑所代替(就目前的电脑象棋软件...
  9. dazhilu网站代码【完整篇】
  10. SQL数据库高级查询命令(2)
  11. 基于Jenkins + Tomcat 的安卓客户端可持续化构建及发布下载(loltube.cn)
  12. pytorch_pix2pix之argparse
  13. layui结合mybatis的pagehelper插件的分页通用的方法
  14. python安装汉化插件及翻译插件
  15. matlab绘制符号函数的ezplot函数
  16. 视频文件加密的方法浅析
  17. 5.Python格式化输出
  18. java rectangle获取xy_Day06 Java基础学习笔记
  19. Python结合MySQL数据库编写简单信息管理系统
  20. GE IC697CPX935 CPU模块PDF帅

热门文章

  1. MS SQL 语句中的字符串连接
  2. Qt学习笔记之Hello World
  3. 机器学习-西瓜书第一、二章
  4. 大数据平台安全问题有哪些
  5. 大数据可视化技术的挑战及应对
  6. CentOS查看硬件情况
  7. Scala学习(三、函数)
  8. 大数据Hadoop复习笔记
  9. PHP数组的访问方法有几种,PHP数组的几种遍历方法
  10. mysql单表约束为_MySQL 表约束