728x90
Spring fox란?
- spring과 연동하는 자동 문서화 라이브러리
1. Springfox 관련 설정
1. gradle 설정
repositories {
…
maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local/' }
}
dependencies {
implementation "io.springfox:springfox-boot-starter:3.0.0"
implementation "io.springfox:springfox-swagger-ui:3.0.0"
...
}
2. Config 파일
@Configuration
public class SpringFoxConfig {
@Bean public Docket api() {
return new Docket(DocumentationType.OAS_30).select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any()).build();
}
}
2. 접속
- http://localhost:8080 이 서버 base url 일 경우, http://localhost:8080/swagger-ui/ 에 documentation 자동 설정
3. Spring security 사용시 설정
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/v3/api-docs/**").permitAll() // OAS_30
.antMatchers("/swagger-resources/**").permitAll()
// .antMatchers("/v2/api-docs/**").permitAll() // swagger 2
.antMatchers("/swagger-ui/**").permitAll();
}
}
4. 새로운 스타일을 적용하고 싶은 경우 (예시: redoc )
redoc
1. 설정
- redoc.standalone.js 파일 (cdn.jsdelivr.net/npm/redoc/bundles/redoc.standalone.js)
- spring boot 경로 : /resources/dist/redoc/index.html
<!DOCTYPE html>
<html>
<head>
<title>ReDoc</title>
<!-- needed for adaptive design -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=Montserrat:300,400,700|Roboto:300,400,700" rel="stylesheet">
<!-- ReDoc doesn't change outer page styles -->
<style> body { margin: 0; padding: 0; } </style>
</head>
<body>
<div id="redoc-container"></div>
<script src="/dist/redoc/redoc.standalone.js"> </script>
<script>
window.onload = function () {
var url = window.location.origin + "/v3/api-docs";
Redoc.init(url, { scrollYOffset: 50 }, document.getElementById('redoc-container'))
}
</script>
</body>
</html>
2. 리소스 핸들러추가
@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
registry.addResourceHandler("/*.worker.js").addResourceLocations("classpath:/static/");
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/static/js/");
registry.addResourceHandler("/fonts/**").addResourceLocations("classpath:/static/fonts/");
registry.addResourceHandler("/css/**").addResourceLocations("classpath:/static/css/");
registry.addResourceHandler("/favicon.ico").addResourceLocations("classpath:/");
// index.html 파일 경로
registry.addResourceHandler("/dist/**").addResourceLocations("classpath:/dist/");
}
}
3. 접속 http://localhost:8080이 base url이면, http://localhost:8080/dist/redoc/index.html로 접속
5. 기타
- 세부사항 적용 https://dimitr.im/documenting-rest-api-swagger-springfox
728x90
'개발 > java,spring,springboot' 카테고리의 다른 글
Spring scheduling + cron (0) | 2021.04.07 |
---|---|
Spring security 기본 설정 - 로그인 (0) | 2021.04.01 |
jwt 설정하기 (spring boot) (0) | 2021.04.01 |
jpa Converter를 이용한 암복호화 (0) | 2021.03.30 |
Spring boot(maven) + oracle db(Oracle 11g express) + lombok CRUD example (0) | 2020.05.06 |
댓글