수색…
기본 응답 메시지 무시
Springfox는 기본적으로 모든 API 컨트롤러에 적용되는 기본 응답 메시지 세트를 정의합니다. 여기에는 201 - Created
및 204 - No Content
뿐만 아니라 여러 40x
응답이 포함됩니다. 귀하의 API에 기본 응답 메시지가 적용되지 않는 경우가있을 수 있습니다. 이 문제를 해결할 수있는 가능성을 빌드해야합니다.
- 기본 응답 메시지를
@ApiResponses
주석을 사용하여 자신 만의 응답 메시지를 정의 할 수 있습니다. - 전 세계에서 독자적인 응답 메시지를 정의 할 수 있습니다.
기본 응답 메시지의 순서
docket.useDefaultResponseMessages(false);
이제 컨트롤러 별 레벨에서 개별 응답 메시지를 설정할 수 있습니다. 예 :
@ApiResponses(value = {
@ApiResponse(code=400, message = "This is a bad request, please stick to the API description", response = RestApiExceptionModel.class),
@ApiResponse(code=401, message = "Your request cannot be authorized.", response = RestApiExceptionModel.class)
})
나만의 기본 응답 메시지 설정
ModelRef errorModel = new ModelRef("RestApiExceptionModel");
List<ResponseMessage> responseMessages = Arrays.asList(
new ResponseMessageBuilder().code(401).message("Unauthorized").responseModel(errorModel).build(),
new ResponseMessageBuilder().code(403).message("Forbidden").responseModel(errorModel).build(),
new ResponseMessageBuilder().code(404).message("NotFound").responseModel(errorModel).build());
docket.globalResponseMessage(RequestMethod.POST, responseMessages)
.globalResponseMessage(RequestMethod.PUT, responseMessages)
.globalResponseMessage(RequestMethod.GET, responseMessages)
.globalResponseMessage(RequestMethod.DELETE, responseMessages);
spring-boot에서 swagger-ui를 사용하여 springfox를 설정하십시오.
- Maven 또는 Gradle을 사용하여 애플리케이션에 springfox 가져 오기
- 애플리케이션에 새 Docket bean을 작성하고 구성하십시오.
- 필요에 따라 API를 문서화하십시오.
- 신청서를 실행하고 달성 한 결과를 확인하십시오.
# 1 Maven으로 springfox를 사용하기
pom.xml에 swagger2 및 swagger-ui에 대한 종속성을 추가하십시오.
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.0</version>
</dependency>
# 2 swagger를 사용하도록 애플리케이션을 구성하십시오.
주석 @EnableSwagger2
를 @SpringBootApplication
주석이 달린 메인 클래스에 추가하고이 (또는 다른) 구성 클래스 내에 Swagger Docket 빈을 만듭니다.
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
이 구성은 애플리케이션 내의 모든 스프링 컨트롤러에 대한 API 문서를 생성합니다. API 문서 생성을 특정 컨트롤러로 제한해야하는 경우 다양한 RequestHandlerSelectors 중에서 선택할 수 있습니다. 예를 들어, RequestHandlerSelectors.basePackage("your.package.structure")
사용하여 패키지 구조를 기반으로 API 문서를 생성하거나 RequestHandlerSelectors.withClassAnnotation(Api.class)
사용하여 주석을 추가 한 특정 클래스를 생성 할 수 있습니다.
# 3 API 문서화
설명서에 설명 된대로 주석을 사용하여 추가 정보로 컨트롤러 클래스 및 메서드를 개선하십시오. 일반 제목, 설명 또는 버전과 같이 api의 일반 정보를 설명하려면 Docket bean 내에서 ApiInfoBuilder ()를 사용하십시오.
ApiInfoBuilder를 사용하는 메타 데이터 정의의 예 :
// Within your configuration class
public static ApiInfo metadata(){
return new ApiInfoBuilder()
.title("Your Title")
.description("Your Description")
.version("1.x")
.build();
}
// Within your method that definies the Docket bean...
docket.apiInfo(metadata());