Spring boot: 여러 RestController에 대한 공통 경로 설정 방법
스프링 부트를 사용하여 api를 작성하고 있으며 모든 리소스를 공통 기본 경로(/api) 뒤에 매핑하려고 합니다.그러나 (예를 들어 @RequestMapping으로 주석을 달아서) 각 RestController 클래스에 주석을 달지 않습니다.저는 다음과 같은 해결책에 대해 생각해 보았지만 모두 제가 원하지 않는 단점이 있습니다.
- 기본 클래스(예: ApiRestController)를 만들고 다른 모든 RestController가 이 클래스를 상속합니다.이는 클래스 수준의 @Requestmapping이 기본 클래스와 구현 클래스 간에 병합되지 않는다는 단점이 있습니다.
- 모든 RestController에 주석을 달지만 이는 코드 중복으로 이어집니다.
- server.context-path 속성을 변경합니다.이는 모든 엔드포인트가 이 기본 경로를 사용한다는 단점이 있습니다.작동기 프로젝트에 의해 노출된 엔드포인트도 마찬가지입니다.
- 사용자 지정 디스패처 서블릿 및 서블릿 등록 빈 사용.그러나 이는 server.context-path를 변경하는 것과 동일한 효과가 있는 것 같습니다.
제가 요약한 솔루션의 단점 없이 이를 수행할 수 있는 방법을 아는 사람이 있습니까?이 프로젝트는 REST 기반 백엔드만 노출하고 정적 콘텐츠는 서버에 제공하지 않습니다(가능한 솔루션에 영향을 미치는지 여부는 알 수 없음).Rest 컨트롤러도 여러 패키지에 걸쳐 분할됩니다.
감사해요.
모든 RestController에 @RequestMapping("/api")을 설치하는 것이 어떻습니까?
@RestController
@RequestMapping("/api")
public class UserApi {
@RequestMapping("/user")
public String user() {
...
}
}
다음을 포함하는 사용자 정의 주석을 생성할 수 있습니다.@RestController
그리고.@RequestMapping
:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@RestConntroller
@RequestMapping(value = "/api" )
@interface MyController {
}
@path 주석을 사용하여 여러 URI를 단일 URI로 간주할 수 있습니다.
@Path("sampleresource/{Filepath:.*}")
public interface SampleResource {
@GET
@Produces({ MediaType.TEXT_PLAIN })
@Path("/hello")
public Response sayHello();
}
비슷한 질문에 대한 제 대답을 보세요.모든 컨트롤러에 대해 기본 @RestController URI 접두사를 구성하는 방법은 무엇입니까?사용자 지정 주석을 생성하고 이를 기반으로 매핑만 수행할 수 있습니다.
언급URL : https://stackoverflow.com/questions/33711986/spring-boot-how-to-set-a-common-path-for-multiple-restcontrollers
'source' 카테고리의 다른 글
정규식을 사용하여 Ruby 문자열에서 부분 문자열 추출 (0) | 2023.06.29 |
---|---|
모든 변경된 파일이 부모 중 한 명과 동의하더라도 결합된 diff 출력으로 병합 커밋을 "git show"하는 방법은 무엇입니까? (0) | 2023.06.29 |
오라클의 이진 필드(블롭)에 대한 조건(예: "유사") (0) | 2023.06.29 |
TypeScript 매개 변수 유형 반환 (0) | 2023.06.29 |
Oracle: 날짜 시간에서 밀리초 차감 (0) | 2023.06.29 |