{"componentChunkName":"component---src-templates-blog-post-js","path":"/springboot/스프링-부트-swagger-api-문서-자동화/","result":{"data":{"site":{"siteMetadata":{"title":"Bottlehs Tech Blog","description":"웹·앱·AI 개발자 전병훈(bottlehs)의 기술 블로그. AI·LLM, JavaScript·Vue, Spring Boot, 알고리즘, 블록체인 실무 가이드를 다룹니다","siteUrl":"https://www.bottlehs.dev","author":{"name":"Jeon Byung Hun","summary":"개발을 즐기는 bottlehs - Engineer, MS, AI, FE, BE, OS, IOT, Blockchain, 설계, 테스트"},"social":{"github":"bottlehs","codepen":"bottlehs"}}},"markdownRemark":{"id":"7e98797e-b076-5f06-967d-5466fa574d90","excerpt":"스프링 부트 Swagger API 문서 자동화 Swagger는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다. 대부분의 사용자들은 스웨거 UI…","html":"<p><img src=\"//assets/springboot.png\" alt=\"스프링 부트 Swagger API 문서 자동화\" title=\"스프링 부트 Swagger API 문서 자동화\"></p>\n<p>Swagger는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다. 대부분의 사용자들은 스웨거 UI 도구를 통해 스웨거를 식별하며 스웨거 툴셋에는 자동화된 문서화, 코드 생성, 테스트 케이스 생성 지원이 포함된다.</p>\n<p>Swagger는 간단한 설정으로 프로젝트에서 지정한 URL들을 HTML화면으로 확인할 수 있게 해준다.</p>\n<h2 id=\"swagger-dependency-library-추가\" style=\"position:relative;\"><a href=\"#swagger-dependency-library-%EC%B6%94%EA%B0%80\" aria-label=\"swagger dependency library 추가 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Swagger Dependency Library 추가</h2>\n<p>설정은 아래와 같이 dependencies 에 swagger 를 추가해 준다.</p>\n<div class=\"gatsby-highlight\" data-language=\"groovy\"><pre class=\"language-groovy\"><code class=\"language-groovy\">dependencies <span class=\"token punctuation\">{</span>\n  <span class=\"token punctuation\">...</span>\n\tcompile group<span class=\"token punctuation\">:</span> <span class=\"token string\">'io.springfox'</span><span class=\"token punctuation\">,</span> name<span class=\"token punctuation\">:</span> <span class=\"token string\">'springfox-swagger2'</span><span class=\"token punctuation\">,</span> version<span class=\"token punctuation\">:</span> <span class=\"token string\">'2.9.2'</span>\n\tcompile group<span class=\"token punctuation\">:</span> <span class=\"token string\">'io.springfox'</span><span class=\"token punctuation\">,</span> name<span class=\"token punctuation\">:</span> <span class=\"token string\">'springfox-swagger-ui'</span><span class=\"token punctuation\">,</span> version<span class=\"token punctuation\">:</span> <span class=\"token string\">'2.9.2'</span>\n  <span class=\"token punctuation\">...</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"swaggerconfigjava-파일-생성\" style=\"position:relative;\"><a href=\"#swaggerconfigjava-%ED%8C%8C%EC%9D%BC-%EC%83%9D%EC%84%B1\" aria-label=\"swaggerconfigjava 파일 생성 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>SwaggerConfig.java 파일 생성</h2>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">package</span> <span class=\"token namespace\">com<span class=\"token punctuation\">.</span>coffee<span class=\"token punctuation\">.</span>coffee</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">import</span> <span class=\"token import\"><span class=\"token namespace\">org<span class=\"token punctuation\">.</span>springframework<span class=\"token punctuation\">.</span>context<span class=\"token punctuation\">.</span>annotation<span class=\"token punctuation\">.</span></span><span class=\"token class-name\">Bean</span></span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> <span class=\"token import\"><span class=\"token namespace\">org<span class=\"token punctuation\">.</span>springframework<span class=\"token punctuation\">.</span>context<span class=\"token punctuation\">.</span>annotation<span class=\"token punctuation\">.</span></span><span class=\"token class-name\">Configuration</span></span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> <span class=\"token import\"><span class=\"token namespace\">springfox<span class=\"token punctuation\">.</span>documentation<span class=\"token punctuation\">.</span>builders<span class=\"token punctuation\">.</span></span><span class=\"token class-name\">PathSelectors</span></span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> <span class=\"token import\"><span class=\"token namespace\">springfox<span class=\"token punctuation\">.</span>documentation<span class=\"token punctuation\">.</span>builders<span class=\"token punctuation\">.</span></span><span class=\"token class-name\">RequestHandlerSelectors</span></span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> <span class=\"token import\"><span class=\"token namespace\">springfox<span class=\"token punctuation\">.</span>documentation<span class=\"token punctuation\">.</span>spi<span class=\"token punctuation\">.</span></span><span class=\"token class-name\">DocumentationType</span></span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> <span class=\"token import\"><span class=\"token namespace\">springfox<span class=\"token punctuation\">.</span>documentation<span class=\"token punctuation\">.</span>spring<span class=\"token punctuation\">.</span>web<span class=\"token punctuation\">.</span>plugins<span class=\"token punctuation\">.</span></span><span class=\"token class-name\">Docket</span></span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> <span class=\"token import\"><span class=\"token namespace\">springfox<span class=\"token punctuation\">.</span>documentation<span class=\"token punctuation\">.</span>swagger2<span class=\"token punctuation\">.</span>annotations<span class=\"token punctuation\">.</span></span><span class=\"token class-name\">EnableSwagger2</span></span><span class=\"token punctuation\">;</span>\n\n<span class=\"token annotation punctuation\">@Configuration</span>\n<span class=\"token annotation punctuation\">@EnableSwagger2</span>\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">SwaggerConfig</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token annotation punctuation\">@Bean</span>\n  <span class=\"token keyword\">public</span> <span class=\"token class-name\">Docket</span> <span class=\"token function\">api</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">return</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Docket</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">DocumentationType</span><span class=\"token punctuation\">.</span><span class=\"token constant\">SWAGGER_2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">select</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">.</span><span class=\"token function\">apis</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">RequestHandlerSelectors</span><span class=\"token punctuation\">.</span><span class=\"token function\">basePackage</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"com.coffee.coffee\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">paths</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">PathSelectors</span><span class=\"token punctuation\">.</span><span class=\"token function\">any</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">build</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"swagger-ui-실행\" style=\"position:relative;\"><a href=\"#swagger-ui-%EC%8B%A4%ED%96%89\" aria-label=\"swagger ui 실행 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Swagger UI 실행</h2>\n<p>SwaggerConfig.java 에서 해당 Controller를 Swagger API 문서로 지정한다.\n브라우저를 통해 domain/swagger-ui.html 로 이동하면 Swagger API 문서 페이지를 볼 수 있다.</p>\n<p><img src=\"//assets/springboot-swagger-ui.png\" alt=\"스프링 부트 springboot swagger ui\" title=\"스프링 부트 springboot swagger ui\"></p>","tableOfContents":"<ul>\n<li><a href=\"/springboot/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-swagger-api-%EB%AC%B8%EC%84%9C-%EC%9E%90%EB%8F%99%ED%99%94/#swagger-dependency-library-%EC%B6%94%EA%B0%80\">Swagger Dependency Library 추가</a></li>\n<li><a href=\"/springboot/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-swagger-api-%EB%AC%B8%EC%84%9C-%EC%9E%90%EB%8F%99%ED%99%94/#swaggerconfigjava-%ED%8C%8C%EC%9D%BC-%EC%83%9D%EC%84%B1\">SwaggerConfig.java 파일 생성</a></li>\n<li><a href=\"/springboot/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-swagger-api-%EB%AC%B8%EC%84%9C-%EC%9E%90%EB%8F%99%ED%99%94/#swagger-ui-%EC%8B%A4%ED%96%89\">Swagger UI 실행</a></li>\n</ul>","wordCount":{"words":101},"fields":{"slug":"/springboot/스프링-부트-swagger-api-문서-자동화/","image":"//assets/springboot.png","faq":[]},"frontmatter":{"title":"스프링 부트 Swagger API 문서 자동화","date":"2021년 4월 1일","dateISO":"2021-04-01T23:39:29.537Z","updatedISO":null,"category":"springboot","description":"Swagger는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다. 대부분의 사용자들은 스웨거 UI 도구를 통해 스웨거를 식별하며 스웨거 툴셋에는 자동화된 문서화, 코드 생성, 테스트 케이스 생성 지원이 포함되며, 간단한 설정으로 프로젝트에서 지정한 URL들을 HTML화면으로 확인할 수 있게 해준다.","tags":["스프링","스프링부트","Spring","SpringBoot","Java","프레임워크","Swagger"]}}},"pageContext":{"slug":"/springboot/스프링-부트-swagger-api-문서-자동화/","previous":{"fields":{"slug":"/springboot/스프링-부트-mariadb-연동/"},"frontmatter":{"title":"스프링 부트 MariaDB 연동","tags":["스프링","스프링부트","Spring","SpringBoot","Java","프레임워크","MariaDB","JDBC"]}},"next":{"fields":{"slug":"/vue/vue-js-router-설치-및-설정/"},"frontmatter":{"title":"Vue JS Router 설치 및 설정","tags":["vue","javascript","framework","frontend","web","router"]}}}},"staticQueryHashes":["213619243","3262363727"]}