swagger를 프론트와 소통하는 API 명세서로 계속 사용해왔는데 설정하는 법을 정리해보려고 합니다. Spring Boot 2.7.8, Gradle 환경에서 설정하는 방법입니다. swagger를 사용하면 따로 API 명세를 작성하지 않아도 되고 추후에 수정할 일이 생겨도 자동으로 수정이 되서 편합니다. 프론트랑 소통할 때도 문서로 하는 것보다 swagger로 바로바로 업데이트 되어서 생산성도 높아집니다.
1. Build.gradle 의존성 추가
implementation 'io.springfox:springfox-boot-starter:3.0.0'
build.gradle에 위의 dependency 코드를 추가합니다.
2. SwaggerConfig.java
@Configuration
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.OAS_30)
.ignoredParameterTypes(AuthenticationPrincipal.class)
.ignoredParameterTypes(Pageable.class)
.useDefaultResponseMessages(false)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("developspace.com.developspace")) // api 스펙이 작성되어 있는 패키지 (controller)
.paths(PathSelectors.any())
.build();
}
public ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("DevelopSpace Rest API Documentation")
.description("Develop Space API 명세")
.version("0.1")
.build();
}
}
3. security 설정 풀어주기
security로 막아 놓은 것에 swagger url 설정 추가해줬습니다.
http.authorizeRequests().antMatchers("/api/member/signup","/api/member/login").permitAll()
.antMatchers("/v3/api-docs/**", "/swagger-ui/**", "/swagger-resources/**").permitAll()
.antMatchers(HttpMethod.GET,"/api/answer/**").permitAll()
.antMatchers("api/question/**").permitAll()
.anyRequest().authenticated();
4. Swagger 확인하기
localhost:8080/swagger-ui/index.html
위의 주소로 접속하면 swagger api 문서를 볼 수 있습니다.
'Things to know' 카테고리의 다른 글
랜덤 닉네임 만들기 (0) | 2023.03.15 |
---|---|
트러블 슈팅 test: Could not find mysql:mysql-connector-java:. (1) | 2023.03.15 |
트러블 슈팅: 게시글 좋아요가 반영이 안되는 현상 (1) | 2023.03.07 |
JPQL사용해서 읽지 않은 알림 갯수 반환 하기 (0) | 2023.01.27 |
Spring IllegalStateException 에러 설명 및 해결 (0) | 2023.01.17 |