[SPRING] 청소기 API에서 기본 기본 오류 컨트롤러 방지 [duplicate]
SPRING청소기 API에서 기본 기본 오류 컨트롤러 방지 [duplicate]
내 봄 부팅 프로젝트에서 swagger2를 사용하고 있습니다. 잘 작동하지만 기본 오류 컨트롤러를 API에서 제외해야합니다. 현재 정규 표현식을 사용하여 다음 코드를 사용하고 있습니다. 작동하지만 완벽하게 수행 할 수있는 방법이 있습니다.
CODE :
@Bean
public Docket demoApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.regex('(?!/error.*).*'))
.build()
}
해결법
-
==============================
1.Google에서 검색 한 후 GitHub의 한 가지 문제에 대한 해결책을 얻었습니다. [질문] 기본 오류 컨트롤러를 배제 설명에 추가하지 않으려면 어떻게해야합니까? Predicates.not ()을 사용하여 수행 할 수 있습니다.
Google에서 검색 한 후 GitHub의 한 가지 문제에 대한 해결책을 얻었습니다. [질문] 기본 오류 컨트롤러를 배제 설명에 추가하지 않으려면 어떻게해야합니까? Predicates.not ()을 사용하여 수행 할 수 있습니다.
Predicates.not ()을 사용하면 코드가 다음과 같이 보입니다.
@Bean public Docket demoApi() { return new Docket(DocumentationType.SWAGGER_2)//<3> .select()//<4> .apis(RequestHandlerSelectors.any())//<5> .paths(Predicates.not(PathSelectors.regex("/error.*")))//<6>, regex must be in double quotes. .build() }
-
==============================
2.시간이 많이 걸렸지 만 다른 사람이 같은 문제가있는 경우 RestController에 대한 선택기를 제공하여이를 수행 할 수 있습니다.
시간이 많이 걸렸지 만 다른 사람이 같은 문제가있는 경우 RestController에 대한 선택기를 제공하여이를 수행 할 수 있습니다.
new Docket(SWAGGER_2) .select() .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)) .paths(PathSelectors.any()) .build();
컨트롤러에는 @RestController 주석이 달려 있습니다.
-
==============================
3.Swagger 문서에 표시된 엔드 포인트를 제한하는 가장 좋은 방법은 다음과 같습니다.
Swagger 문서에 표시된 엔드 포인트를 제한하는 가장 좋은 방법은 다음과 같습니다.
@Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.any()) .paths(paths()) .build().apiInfo(metadata()); } private Predicate<String> paths() { return or( regex("/firstContext.*"), regex("/secondContext.*")); } private ApiInfo metadata() { return new ApiInfoBuilder() .title("SomeTitle") .description("SomeDescription") .build(); }
따라서 paths () 메소드 컨텍스트로 시작하지 않는 각 끝점은 swagger에 의해 렌더링되지 않습니다.
-
==============================
4.같은 문제가 발생했습니다. 저는 이것을 했어요.
같은 문제가 발생했습니다. 저는 이것을 했어요.
java @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("com.xxx.xxx")) .paths(PathSelectors.any()) .build(); }
-
==============================
5.당신이해야한다고 생각하는 모든 API 끝점에 일치하는 일부 정규식을 작성하는 경우 microservices를 실행하는 경우 다음 아마 어쩌면 단지 하나의 단어를 일치하지 않으면 질문에 넣어 뭔가 더 의미가 있습니다 나를.
당신이해야한다고 생각하는 모든 API 끝점에 일치하는 일부 정규식을 작성하는 경우 microservices를 실행하는 경우 다음 아마 어쩌면 단지 하나의 단어를 일치하지 않으면 질문에 넣어 뭔가 더 의미가 있습니다 나를.
@Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.regex("/accounts.*")) .build(); }
-
==============================
6.사용자 정의 ErrorController를 사용하는 경우
사용자 정의 ErrorController를 사용하는 경우
@ApiIgnore
또는
@Api(hidden = true)
예 :
@Controller @ApiIgnore class MyErrorController : ErrorController { @RequestMapping("/error") fun handleError(request: HttpServletRequest): String { val status: String? = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE)?.toString() val statusCode: Int? = status?.toInt() return when (statusCode) { HttpStatus.NOT_FOUND.value() -> return "error-404" HttpStatus.INTERNAL_SERVER_ERROR.value() -> return "error-500" else -> "error" } } override fun getErrorPath(): String { return "/error" } }
-
==============================
7.제 경우에는 @Bean으로 메소드를 만들 때 기본 에러 컨트롤러를 보여주지 않을 것입니다.
제 경우에는 @Bean으로 메소드를 만들 때 기본 에러 컨트롤러를 보여주지 않을 것입니다.
@Bean을 삭제하면 swagger-ui에 기본 오류 컨트롤러가 표시됩니다.
@Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2).select() .apis(RequestHandlerSelectors.basePackage(CONTROLLER_PATH)) .paths(regex("/.*")).build();}
from https://stackoverflow.com/questions/33431343/avoiding-default-basic-error-controller-from-swagger-api by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 데이터 JPA의 동적 쿼리 (0) | 2019.07.13 |
---|---|
[SPRING] JBoss EAP 6.1에서 스프링 부트 배포 (0) | 2019.07.13 |
[SPRING] Spring @ 여러 데이터 소스 간의 트랜잭션과 트랜잭션 (0) | 2019.07.12 |
[SPRING] 메타 데이터 용 내장 데이터베이스와 다른 데이터 용 두 번째 데이터베이스를 사용하는 Java Spring Batch (0) | 2019.07.12 |
[SPRING] @Document 주석의 MongoDB 및 SpEL 표현식 (0) | 2019.07.11 |