Swagger
OAS(Open Api Specification)을 위한 프레임워크
API 문서화를 쉽게 할 수 있도록 도와줌
파라미터를 넣어 실제로 어떤 응답이 오는지 테스트 가능
OpenAPI를 구현하기 위한 도구 세트
Open API
RESTful API 설계를 위한 업계 표준 사양
Spring Boot에 Swagger 적용하기
1. gradle dependency 추가
- build.gradle
dependencies {
implementation 'io.springfox:springfox-boot-starter:3.0.0'
implementation 'io.springfox:springfox-swagger-ui:3.0.0'
}
2. Swagger Config 설정
@Configuration
public class SwaggerConfig {
// Swagger 설정의 핵심
@Bean
public Docket api() {
return new Docket(DocumentationType.OAS_30)
// docket group명
.groupName("test")
// ApiSelectorBuilder
.select()
// api 스펙
.apis(RequestHandlerSelectors.any())
// api 중에 path 조건에 맞는 api를 필터링하여 문서화
.paths(PathSelectors.any())
.build()
// api 정보
.apiInfo(apiInfo());
}
// api 정보
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("TEST SWAGGER")
.description("test restapi")
.version("1.0")
.build();
}
}
3. Swagger 접속하기
localhost:port번호/swagger-ui/
4. Swagger 어노테이션 적용
@RequiredArgsConstructor
@RestController
public class TestRestApiController {
private final MemberService memberService;
@ApiOperation(value="회원가입", notes="")
@PostMapping("/test/signup")
public String signup(@RequestBody @ApiParam(value="회원가입할 때 필요한 회원 정보", required = true) @Valid MemberJoinDto member) throws Exception {
return memberService.join(member);
}
}
@Builder
@Data
public class MemberJoinDto {
/// 회원 Id
@NotBlank(message = "회원 ID를 입력하세요.")
@Pattern(regexp = "[a-zA-Z0-9]{5,10}",
message = "아이디는 영문, 숫자만 가능하며 5~10 글자까지 가능합니다.")
private String userId;
// 비밀번호
@NotBlank(message = "비밀번호를 입력하세요.")
@Pattern(regexp = "(?=.*[0-9])(?=.*[a-zA-Z])(?=.*\\W)(?=\\S+$).{8,16}",
message = "비밀번호는 영문과 숫자, 특수문자 조합으로 8~16 글자까지 가능합니다.")
private String password;
// 회원 이름
@NotBlank(message = "이름을 입력하세요.")
@Pattern(regexp = ".{1,50}",
message = "이름은 1~50 글자까지 가능합니다.")
private String name;
// 주민등록번호
@NotBlank(message = "주민등록번호를 입력하세요.")
@Pattern(regexp = "\\d{6}\\-[1-4]\\d{6}",
message = "정확한 주민등록번호를 입력하세요.")
private String regNo;
}
@ApiOperation
Api에 대한 설명
@RequestBody
Request Body로 Parmeter를 받아옴
@ApiParam
요청 Parmeter에 대한 설명 및 필수여부
reference
- Spring Boot Swagger 3.x 적용
'Programming > Spring Boot' 카테고리의 다른 글
[Spring Boot] Spring Security JWT Token (0) | 2022.02.15 |
---|---|
[Spring Boot] Spring Security PasswordEncoder (0) | 2022.02.15 |
[Spring Boot] Jackson과 Gson (0) | 2022.02.15 |
[Spring Boot] H2 Database 설치 및 접속 (0) | 2022.02.15 |
[Spring Boot] thymeleaf-layout-dialect 적용하기 (0) | 2021.12.28 |