当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Boot中为所有控制器指定前缀?

沈运恒
2023-03-14
@RestController
@RequestMapping("/users")
public class UserController {
    ...
}

@RestController
@RequestMapping("/orders")
public class OrderController {
    ...
}

我想通过URL分别访问http://localhost:8080/api/usershttp://localhost:8080/api/orders

如何在Spring Boot中实现这一点?

共有1个答案

常朗
2023-03-14

您可以在自定义配置中为/api/*提供到Spring Boot应用程序根上下文路径的映射。

import org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration;
import org.springframework.boot.context.embedded.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.DispatcherServlet;

@Configuration
public class DispatcherServletCustomConfiguration {

    @Bean
    public DispatcherServlet dispatcherServlet() {
        return new DispatcherServlet();
    }

    @Bean
    public ServletRegistrationBean dispatcherServletRegistration() {
        ServletRegistrationBean registration = new ServletRegistrationBean(
                dispatcherServlet(), "/api/");
        registration.setName(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME);
        return registration;
    }
}

或者将其添加到src\main\resources文件夹中的application.properties

server.contextPath=/api/*

编辑

server.servlet.contextPath=/api/*
 类似资料:
  • 问题内容: 我有控制器映射和: 我想分别通过URL 和访问这些URL 。 如何在Spring Boot中实现这一目标? 问题答案: 您可以在自定义配置中提供到Spring Boot应用程序的根上下文路径的映射。 或将此添加到您的in 文件夹中 编辑 从Spring Boot 2.x开始,该属性已被弃用,应替换为 您可以在此处找到更多的内容Spring Boot Context Root, 并在此处

  • 在一个项目中,当我将代码切换到主分支时,我开始发现一些错误。其中之一是加载异常错误。整个日志还显示了一个No Suck method异常错误。 我也想发布控制器,但因为它超过600行,我不确定这是否有帮助,我已经确保控制器中的每个方法都是公共的,唯一的私有部分是我使用的变量和图表。

  • 在spring boot中@RequestBody内容到达控制器之前,我如何覆盖它? > 此外,我还搜索了Request estBodyAdviceAdapter。 有几个链接对spring boot不起作用。 如何多次读取request.getInputStream() 如何在Spring引导到达控制器之前修改请求正文 现在,我可以将输入流读入字符串中,进行一些修改并设置回控制器的输入流吗?

  • 我试图找到它,但我发现了很多不同的场景,但没有这一个。 我想做的是在com.myproject.api下的控制器中的所有路由中添加“/api/”前缀。我希望com.myapp.api包下的所有控制器使用“/api/*”,而com.myapp.web包下的所有控制器不使用前缀 用Spring/Spring靴可以吗?

  • 问题内容: 我知道您可以设置in 来更改根上下文。 另外,我可以在Spring Boot的应用程序配置中添加一个附加上下文,如以下示例(在Groovy中),以便在根上下文的URL映射中添加“ / api”: 我正在尝试为Web服务调用专门准备一个单独的基本URI“ / api”,我可以利用它来提高安全性,等等。但是,使用上述方法将意味着可以通过以下方式访问我的任何URI(无论是否为Web服务) “

  • 问题内容: 为了提供一些运行时生成的API文档,我想遍历所有Spring MVC控制器。所有控制器都使用Spring @Controller注释进行注释。目前我是这样的: 但是这个代码的第一个电话是EXTREMELY缓慢。我想知道Spring是否迭代类路径中的所有类,而不是仅检查定义的bean。运行上述代码时,控制器已经加载,日志显示了所有控制器及其请求映射,因此Spring MVC必须已经了解所