[Spring] 나만의 게시판 만들기 5 - Swagger 설정
Swagger
를 통해 REST API로 개발한 내용의 문서화가 가능하며, 간단한 테스팅 작업을 UI로 표현 가능하기 때문에 사용했습니다. Shoooooooot!
설정
build.gradle
dependencies {
//swagger
implementation 'io.springfox:springfox-swagger2:2.9.2'
implementation 'io.springfox:springfox-swagger-ui:2.9.2'
}
- 스프링의 gradle에 의존성을 추가하여 swagger를 사용할 수 있도록 합니다.
SwaggerConfig.class
@Configuration
@EnableSwagger2
public class SwaggerConfig {
private static final String API_NAME = "JinMin's Board";
private static final String API_VERSION = "0.1";
private static final String API_DESCRIPTION = "Board 명세서";
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.consumes(getConsumeContentTypes())
.produces(getProduceContentTypes())
.apiInfo(apiInfo())
.useDefaultResponseMessages(false)
.select()
.apis(RequestHandlerSelectors.basePackage("me.jinmin.boardver2"))
.paths(PathSelectors.any())
.build();
}
private Set<String> getConsumeContentTypes() {
Set<String> consumes = new HashSet<>();
consumes.add("application/json;charset=UTF-8");
consumes.add("application/x-www-form-urlencoded");
return consumes;
}
private Set<String> getProduceContentTypes() {
Set<String> produces = new HashSet<>();
produces.add("application/json;charset=UTF-8");
return produces;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title(API_NAME)
.version(API_VERSION)
.description(API_DESCRIPTION)
.build();
}
}
@Configuration
: 설정 파일을 가르키는 스프링 애노테이션입니다. 이를 통해, 스프링 빈 컨테이너에서 해당 클래스를 설정 클래스로 간주합니다.
@EnableSwagger2
: Swagger를 사용할 수 있도록 하는 애노테이션입니다.
- Docket 클래스를 빌더 형식으로 구현한 후 반환합니다. (설정 메서드들에 대해 간략히 설명하겠습니다!)
consumes
: Set, 요청 타입을 설정할 수 있습니다.
poduces
: Set, 응답 타입을 설정할 수 있습니다.
apiInfo
: ApiInfo, swagger ui에서 보여지는 간략한 정보를 입력할 수 있습니다.
userDefaultResponseMessages
: false
로 설정할 경우 자동적으로 status code를 생성합니다.
select
: ApiSelectorBuilder 생성
apis
: 패키지 위치를 지정합니다.
RequestHandlerSelectors.basePakage
: 요청 기본 패키지를 지젛압니다.
paths
: 경로를 지정합니다.
PathSelectors.any
: 어느 경로도 선택될 수 있습니다.
예제
UserSignApi
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/users")
public class UserSignApi {
private final UserSignService userSignService;
@ApiOperation(value = "회원가입", notes = "회원가입을 합니다.")
@ApiResponses({
@ApiResponse(code = 200, message = "success"),
@ApiResponse(code = 404, message = "Not found")
})
@PostMapping("/signup")
public ApiResult<Long> signUp(@Valid @RequestBody UserSignUpRequest userSignUpRequest) {
try {
Long userId = userSignService.signUp(userSignUpRequest);
return ApiResult.succeed(userId);
} catch (Exception e) {
log.error(e.getMessage());
return ApiResult.failed(e.getMessage());
}
}
//...
}
- 설정파일에서 설정한 내용과 REST API 메서드에 설정된 애노테이션들이 어떻게 보여지는지 확인해볼 필요가 있습니다.
- 스프링 애플리케이션을 실행한 뒤, localhost:8080/swagger-ui.html 를 통해 초기 화면에 진입할 수 있습니다.
-
앞서 설정한 API_NAME
, API_VERSION
, API_DESCRIPTION
등을 확인할 수 있습니다.
-
@ApiOperation
과 @ApiResponses
의 내용을 확인할 수 있습니다.
Try it out
버튼을 활용해서 테스트도 가능합니다.
- 필요한 요청(
UserSignUpRequest
)의 데이터를 기입한 후 Excute 버튼을 눌러 정보를 확인할 수 있습니다.
Author And Source
이 문제에 관하여([Spring] 나만의 게시판 만들기 5 - Swagger 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@jinmin2216/Spring-나만의-게시판-만들기-5-Swagger-설정
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
build.gradle
dependencies {
//swagger
implementation 'io.springfox:springfox-swagger2:2.9.2'
implementation 'io.springfox:springfox-swagger-ui:2.9.2'
}
SwaggerConfig.class
@Configuration
@EnableSwagger2
public class SwaggerConfig {
private static final String API_NAME = "JinMin's Board";
private static final String API_VERSION = "0.1";
private static final String API_DESCRIPTION = "Board 명세서";
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.consumes(getConsumeContentTypes())
.produces(getProduceContentTypes())
.apiInfo(apiInfo())
.useDefaultResponseMessages(false)
.select()
.apis(RequestHandlerSelectors.basePackage("me.jinmin.boardver2"))
.paths(PathSelectors.any())
.build();
}
private Set<String> getConsumeContentTypes() {
Set<String> consumes = new HashSet<>();
consumes.add("application/json;charset=UTF-8");
consumes.add("application/x-www-form-urlencoded");
return consumes;
}
private Set<String> getProduceContentTypes() {
Set<String> produces = new HashSet<>();
produces.add("application/json;charset=UTF-8");
return produces;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title(API_NAME)
.version(API_VERSION)
.description(API_DESCRIPTION)
.build();
}
}
@Configuration
: 설정 파일을 가르키는 스프링 애노테이션입니다. 이를 통해, 스프링 빈 컨테이너에서 해당 클래스를 설정 클래스로 간주합니다.@EnableSwagger2
: Swagger를 사용할 수 있도록 하는 애노테이션입니다.consumes
: Set, 요청 타입을 설정할 수 있습니다.poduces
: Set, 응답 타입을 설정할 수 있습니다.apiInfo
: ApiInfo, swagger ui에서 보여지는 간략한 정보를 입력할 수 있습니다.userDefaultResponseMessages
:false
로 설정할 경우 자동적으로 status code를 생성합니다.select
: ApiSelectorBuilder 생성apis
: 패키지 위치를 지정합니다.RequestHandlerSelectors.basePakage
: 요청 기본 패키지를 지젛압니다.
paths
: 경로를 지정합니다.PathSelectors.any
: 어느 경로도 선택될 수 있습니다.
UserSignApi
@Slf4j @RestController @RequiredArgsConstructor @RequestMapping("/users") public class UserSignApi { private final UserSignService userSignService; @ApiOperation(value = "회원가입", notes = "회원가입을 합니다.") @ApiResponses({ @ApiResponse(code = 200, message = "success"), @ApiResponse(code = 404, message = "Not found") }) @PostMapping("/signup") public ApiResult<Long> signUp(@Valid @RequestBody UserSignUpRequest userSignUpRequest) { try { Long userId = userSignService.signUp(userSignUpRequest); return ApiResult.succeed(userId); } catch (Exception e) { log.error(e.getMessage()); return ApiResult.failed(e.getMessage()); } } //... }
- 설정파일에서 설정한 내용과 REST API 메서드에 설정된 애노테이션들이 어떻게 보여지는지 확인해볼 필요가 있습니다.
- 스프링 애플리케이션을 실행한 뒤, localhost:8080/swagger-ui.html 를 통해 초기 화면에 진입할 수 있습니다.
-
앞서 설정한
API_NAME
,API_VERSION
,API_DESCRIPTION
등을 확인할 수 있습니다. -
@ApiOperation
과@ApiResponses
의 내용을 확인할 수 있습니다.Try it out
버튼을 활용해서 테스트도 가능합니다.- 필요한 요청(
UserSignUpRequest
)의 데이터를 기입한 후 Excute 버튼을 눌러 정보를 확인할 수 있습니다.
- 필요한 요청(
-
Author And Source
이 문제에 관하여([Spring] 나만의 게시판 만들기 5 - Swagger 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jinmin2216/Spring-나만의-게시판-만들기-5-Swagger-설정저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)