사용자 도구

사이트 도구


programming:documentation:swagger

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
programming:documentation:swagger [2018/07/24 13:44]
kwon37xi [SpringBoot]
programming:documentation:swagger [2023/08/17 15:39] (현재)
kwon37xi [ReDoc]
줄 1: 줄 1:
 ====== Swagger ====== ====== Swagger ======
   * http://swagger.io/   * http://swagger.io/
 +  * [[programming:documentation:swagger:codegen|Swagger Code Generation]]
 +  * -> [[programming:documentation:openapi_spec|Open API Specification]]로 표준화됨.
 +  * [[springframework:springfox|SpringFox]] - Spring & Swagger
   * [[https://github.com/swagger-api/swagger-core/wiki/Annotations|Swagger Annotations]]   * [[https://github.com/swagger-api/swagger-core/wiki/Annotations|Swagger Annotations]]
   * [[https://dzone.com/articles/why-is-swagger-json-better-than-swagger-java-clien|Why Is Swagger JSON Better Than Swagger Java Client? - DZone Java]]   * [[https://dzone.com/articles/why-is-swagger-json-better-than-swagger-java-clien|Why Is Swagger JSON Better Than Swagger Java Client? - DZone Java]]
  
-===== Spring MVC and swagger ===== +===== ReDoc ===== 
-  * [[https://github.com/martypitt/swagger-springmvc|Swagger SpringMVC]] +  * [[https://github.com/Rebilly/ReDoc|ReDoc]] : Swagger API 문서화. 
-  * [[https://github.com/adrianbk/swagger-springmvc-demo/tree/master/swagger-ui|Swagger-UI]] +  * [[https://webhookrelay.com/blog/2018/11/05/openapi-redoc-tutorial/|Documenting your API with OpenAPI (Swagger) and Redoc — Web Relay]] 
-  * Spring MVC Swagger 튜토리얼 시리즈 +  * 지 내 검색과 더 유려한 UI를 제공.
-    * [[http://www.javacodegeeks.com/2014/10/spring-rest-api-with-swagger-creating-documentation.html|Spring Rest API with Swagger – Creating documentation Swagger 문서 생성]] +
-    * [[http://www.javacodegeeks.com/2014/11/spring-rest-api-with-swagger-exposing-documentation.html|Spring Rest API with Swagger – Exposing documentation]] Spring REST API를 웹 서비스로 볼 수 있게 해줌 +
-  * Spring MVC API 적용 Servlet의 "/"가 아닌 "/api/*" 형태로 매핑되면 Swagger 적용이 복잡진다.<code java> +
-// /css/*, /js/* 등에 대한 핸들러 추가. +
-@Override +
-protected void addResourceHandlers(ResourceHandlerRegistry registry) { +
-  registry.addResourceHandler("css/**", "js/**", "lib/**", "images/**", "swagger-ui.js"+
-    .addResourceLocations(WEB_JAR_RESOURCE_LOCATION, +
-        WEB_JAR_RESOURCE_LOCATION + "css/", +
-        WEB_JAR_RESOURCE_LOCATION + "js/", +
-        WEB_JAR_RESOURCE_LOCATION + "lib/", +
-        WEB_JAR_RESOURCE_LOCATION + "images/"+
-    .setCachePeriod(0); +
-  super.addResourceHandlers(registry); +
-}+
  
-@ApiIgnore 
-@Controller 
-public class SwaggerController { 
-  @Autowired 
-    private ResourceLoader resourceLoader; 
  
-  @RequestMapping("/swagger") +===== Swagger2MarkUp ===== 
-    public void swagger(HttpServletResponse response) throws IOException { +  * [[https://github.com/Swagger2Markup/swagger2markup|Swagger2Markup/swagger2markup]] A Swagger to AsciiDoc or Markdown converter to simplify the generation of an up-to-date RESTful API documentation by combining documentation that’s been hand-written with auto-generated API documentation. 
-      final Resource swaggerHtmlResource = +  * [[https://github.com/Swagger2Markup/swagger2markup-gradle-plugin|Swagger2Markup/swagger2markup-gradle-plugin]] A Swagger2Markup Gradle Plugin. 
-        resourceLoader.getResource("classpath:/META-INF/resources/sdoc.jsp");+  * [[https://github.com/Swagger2Markup/spring-swagger2markup-demo|Swagger2Markup/spring-swagger2markup-demo]] [[springframework:springfox|SpringFox]] 로 Spring Boot 문서를 test 시에 ''swagger.json'' 으로 생성하고, 이를 가지고 [[:asciidoc|AsciiDoc]]을 생성한뒤 [[asciidoc:asciidoctor|AsciiDoctor]] 를 통해서 다시 HTML/PDF 문서로 바꾼다. 
 +  * [[https://dzone.com/articles/static-api-documentation-with-spring-and-swagger|Static API Documentation With Spring and Swagger - DZone Integration]] 
 +<code java> 
 +// Spring / Swagger 에서 swagger.json 을 파일로 뽑아내는 예제
  
-      final String swaggerHtmlContents = +@WebAppConfiguration 
-        CoupangIOUtils.toString(swaggerHtmlResource.getInputStream(), "UTF-8"); +@RunWith(SpringJUnit4ClassRunner.class) 
-      final String refinedHtml swaggerHtmlContents +@AutoConfigureRestDocs(outputDir = "build/asciidoc/snippets") 
-        .replaceAll("http://swagger.wordnik.com", "/api/swagger");+@SpringBootTest(classes {Application.class, SwaggerConfig.class}) 
 +@AutoConfigureMockMvc 
 +public class Swagger2MarkupTest {
  
-      response.setContentType("text/htmlcharset=UTF-8"); +    private static final Logger LOG = LoggerFactory.getLogger(Swagger2MarkupTest.class); 
-      final PrintWriter writer = response.getWriter(); + 
-      writer.write(refinedHtml); + 
-      writer.close();+    @Autowired 
 +    private MockMvc mockMvc; 
 + 
 +... 
 + 
 +    @Test 
 +    public void createSpringfoxSwaggerJson() throws Exception { 
 +        //String designFirstSwaggerLocation = Swagger2MarkupTest.class.getResource("/swagger.yaml").getPath(); 
 + 
 +        String outputDir System.getProperty("io.springfox.staticdocs.outputDir"); 
 +        MvcResult mvcResult = this.mockMvc.perform(get("/v2/api-docs"
 +                .accept(MediaType.APPLICATION_JSON)) 
 +                .andExpect(status().isOk()) 
 +                .andReturn(); 
 + 
 +        MockHttpServletResponse response = mvcResult.getResponse(); 
 +        String swaggerJson = response.getContentAsString(); 
 +        Files.createDirectories(Paths.get(outputDir)); 
 +        try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(outputDir, "swagger.json"), StandardCharsets.UTF_8)){ 
 +            writer.write(swaggerJson); 
 +        }
     }     }
 +...
 } }
 </code> </code>
- +===== 기타 ===== 
 +  * https://github.com/sourcey/spectacle 
 +  * [[https://www.baeldung.com/swagger-generate-pdf|Generate PDF from Swagger API Documentation | Baeldung]]
programming/documentation/swagger.1532407490.txt.gz · 마지막으로 수정됨: 2018/07/24 13:44 저자 kwon37xi