如何设置不同的前缀端点和静态内容在春季启动?



我想问一下是否有可能(以及如何)为静态内容和spring引导应用程序中的端点设置不同的前缀。我一直在应用程序属性中使用server.servlet.contextPath=/api,但它也设置了静态内容的前缀。

我想实现的是拥有"/api"控制器中端点的前缀,并从"/"根。

实际上,我需要的是能够将静态内容设置为"/"应用程序的其他部分可以在"/api">

Spring Boot为web应用程序使用内置的WebMvcAutoConfigurationAdapter。默认行为在这个类中定义。

我假设你的控制器用@RestController注释。如果是这种情况,你可以将所有控制器映射到不同的位置。

创建一个实现WebMvcConfigurer接口的配置类。覆盖configurePathMatch(PathMatchConfigurer configurer)方法并实现所需的路径配置。

在下面的示例中,静态内容仍将以"/"并且所有REST端点都可以使用"/api"作为前缀。

import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.method.HandlerTypePredicate;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
configurer.addPathPrefix("/api", HandlerTypePredicate.forAnnotation(RestController.class));
}
}

你会注意到在这个类中没有@EnableWebMvc注释,因为它会禁用WebMvc的Spring Boot自动配置机制。

相关内容

  • 没有找到相关文章

最新更新