참고
Swagger란 무엇인가?
build.gradle 추가
NOTE
// 스프링 3.x 이상
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
// 스프링 3.x 미만
implementation 'io.springfox:springfox-boot-starter:3.0.0'
implementation 'io.springfox:springfox-swagger-ui:3.0.0'
Groovy
복사
스프링 부트 3 이상부터는 springdoc-openapi-ut를 사용해야 한다!
•
스프링 부트가 2.x버전이라도 왠만하면 springdoc-openapi-ui를 사용하는걸 권장한다.
◦
springfox는 2020년 7월기준으로 업데이트를 멈추었기 때문
◦
@Configuration을 하지 않아도 자동으로 생성된다!
SwaggerConfig - Annotaion
NOTE
@OpenAPIDefinition(
servers = @Server(url = "https://wantedonboarding.duckdns.org/"),
info = @Info(title = "Couple App", description = "couple app api명세", version = "v1"),
security = @SecurityRequirement(name = "Bearer"))
@SecurityScheme(
name = "Bearer",
type = SecuritySchemeType.HTTP,
scheme = "bearer",
bearerFormat = "JWT",
in = SecuritySchemeIn.HEADER,
paramName = "Authorization"
)
@RequiredArgsConstructor
@Configuration
public class SwaggerConfig {
@Bean
public GroupedOpenApi chatOpenApi() {
String[] paths = {"/**"};
return GroupedOpenApi.builder()
.group("COUPLE API v1") // 스웨거 그룹이름
.pathsToMatch(paths) // 스웨거 적용 API 경로
.build();
}
}
Java
복사
배포서버 https의 경로를 테스트하기 위한 설정
구버전 코드
실제 사용가능한 Annotation 종류
•
@OpenAPiDefinition
◦
server
▪
API 서버의 URL 설정
◦
info
▪
API의 기본 정보를 설명한다.
◦
security
▪
API의 보안 요구 사항을 정의한다.
•
@SecurityScheme
◦
name
▪
보안 체계의 이름
◦
type
▪
보안 체계의 유형(ex HTTP, OAuth2, API Key ..)
◦
scheme
▪
보안 체계의 구조 (ex bearer)
◦
in
▪
보안 파라미터가 어디에 위치하는가?
◦
paramName
▪
보안 파라미터의 이름
Controller - Annotations
NOTE
@Tag(name = "회원가입/로그인 API")
@RestController
@RequestMapping("/auth")
// ...
public class AuthController {
private final AuthService authService;
@Operation(summary = "회원가입")
@PostMapping("/signup")
public ResponseEntity<?> authSignUp(@Valid @RequestBody SignUpRequest signUpRequest) {}
Java
복사
컨트롤러에서 정보를 추가할 수도 있음!