안녕하세요. 유저인사이트 박태양입니다.
이번 시간에는 Spring Boot 프로젝트에 Swagger를 적용하는 방법을 알아보겠습니다.
Swagger는 API 개발 및 문서화를 도와주는 오픈소스 프레임워크입니다.
여러분이 생성한 API를 자동으로 문서화 해주고, 웹 페이지를 통해 편리하게 호출할 수 있습니다.
실습 버전 정보는 아래와 같습니다.
Spring Boot : 2.7.9
Java : 11 (JDK 11.0.2)
Swagger : 3.0.0
Swagger 사용을 위해 pom.xml에 아래 디펜던시를 추가해줍니다.
SpringFox는 Spring 기반으로 개발된 API를 자동으로 문서화 해주는 역할을 합니다.
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
Swagger 관련 설정을 담당할 Config 파일을 생성합니다.
@Configuration
public class SwaggerConfig {
public static final String AUTHORIZATION_HEADER = "Authorization";
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2).securityContexts(
Arrays.asList(securityContext())).securitySchemes(Arrays.asList(apiKey())).select()
.apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build();
}
private ApiKey apiKey() {
return new ApiKey("JWT", AUTHORIZATION_HEADER, "header");
}
private SecurityContext securityContext() {
return SecurityContext.builder().securityReferences(defaultAuth()).build();
}
List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return Arrays.asList(new SecurityReference("JWT", authorizationScopes));
}
}
securityContexts : API 작업에 사용할 기본 인증 방식 목록
securitySchemes : 스웨거에서 사용할 API 인증 방식 목록
apis : API 컨트롤러 패키지 경로
paths : 패키지 내 API 경로
간단한 테스트를 위해 컨트롤러를 추가합니다.
@RestController(value = "/user")
public class UserController {
@GetMapping
public List<String> list() {
return Arrays.asList("Junho Park, Jinyong Park");
}
}
Spring Boot 2.6 부터 pathmatch 기본값이 변경되었습니다. (AntPathMatcher -> PathPatternParser)
PathPattern에서는 ** 형식이 마지막에서만 사용 가능합니다.
예) /pages/{**} (가능) /pages/{**}/details (불가능)
그래서 application.yml에서 아래와 같은 설정 값 추가가 필요합니다.
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
앱 실행 후 http://localhost:8080/swagger-ui/ 로 접속하면 아래와 같은 화면을 볼 수 있습니다.
기존에 CRUD 관련 API를 생성해 두었다면, 아래와 같이 메서드별로 정리되어 나타납니다.
인증토큰을 헤더에 추가하면 아래와 같이 요청됩니다.
만약, 운영서버에서 스웨거 UI를 숨기고 싶다면, application.yml 파일에서 아래와 같이 설정해주면 됩니다.
springfox:
documentation:
enabled: false
이상으로 Spring Boot 프로젝트에 Swagger 세팅하는 방법을 알아보았습니다.
감사합니다.
참고자료 : https://github.com/eugenp/tutorials/tree/master/spring-security-modules/spring-security-web-rest
'세미나' 카테고리의 다른 글
실무에서 사용하는 Spring Security Configuration (0) | 2023.04.04 |
---|---|
GPS 데이터와 좌표계에 대한 문제 해결 과정 (0) | 2023.03.17 |
ChatGPT 체험 후기 (0) | 2023.02.24 |
Maven 프로젝트 Gradle로 변환하기 (0) | 2023.02.14 |
Redux와 Mobx 비교 체험기 (0) | 2023.02.09 |