>Java >java지도 시간 >SpringBoot 다중 컨트롤러에 URL 접두사를 추가하는 방법

SpringBoot 다중 컨트롤러에 URL 접두사를 추가하는 방법

WBOY
WBOY앞으로
2023-05-12 18:37:202091검색
머리말

어떤 경우에는 서비스 컨트롤러의 접두사가 일관됩니다. 예를 들어 모든 URL의 접두사는 /context-path/api/v1이고 일부 URL에는 통합 접두사를 추가해야 합니다.

가능한 해결책은 서비스의 context-path를 수정하고 api/v1을 context-path에 추가하는 것입니다. 전역 접두사를 수정하면 위의 문제를 해결할 수 있지만 URL에 접두사가 여러 개 있는 경우에는 단점이 있습니다. 일부 URL 앞에 api/v2를 붙여야 하는 경우에는 차이를 알 수 없습니다. 서비스의 일부 정적 리소스에 api/v1을 추가하지 않으려는 경우에도 차이를 알 수 없습니다.

다음은 사용자 정의 주석을 통해 특정 URL 접두어를 통합 추가한 것입니다.

1. 구성 파일에 접두사 구성을 추가하세요

여러 접두사가 필요한 경우 여러 구성 세트를 추가하세요. 예를 들어 다음을 추가하세요: api.prefix.v2=/api/v2

####### #### ####url 접두사 구성##############
api.prefix.v1=/api/v1

2 매핑된 엔터티를 구성합니다.

3. 사용자 정의 주석

이 주석 기능은

과 일치하며 api.prefix.v1의 구성에 해당합니다. 구성 세트가 여러 개인 경우에는 여러 개의 주석을 정의하세요.@RestController

@Data
@Component
@ConfigurationProperties(prefix = "api.prefix")
public class ApiPrefix {
    private String v1;
}

4. 사용자 정의 PathMatch에 접두사를 추가하세요.

구성 클래스 상속 WebMvcConfigurer를 추가하고,configurePathMatch 메서드를 재정의하고, 클래스의 ApiV1RestController 주석이 있는 컨트롤러의 인터페이스에 해당 접두사를 추가합니다.

@RestController
@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiV1RestController {
}

5. 테스트

해당 컨트롤러에 @RestController 주석 대신 @ApiV1RestController 주석을 사용해야 합니다

@AutoConfiguration
public class WebMvcConfig implements WebMvcConfigurer {
    @Autowired
    private ApiPrefix apiPrefix;
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        configurer.addPathPrefix(apiPrefix.getV1(), c -> c.isAnnotationPresent(ApiV1RestController.class));
    }
}

위 내용은 SpringBoot 다중 컨트롤러에 URL 접두사를 추가하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제