From 4cdbff30b7b0f029dd4960e06d1a7be0cf760b3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B6=8C=EC=A3=BC=EC=84=B1?= <99165624+JoosungKwon@users.noreply.github.com> Date: Fri, 4 Aug 2023 21:51:50 +0900 Subject: [PATCH 1/2] Feat(Web): ResourceHandler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 정적 리소스(API 문서화)를 위한 경로 설정 --- .../clover/habbittracker/global/config/web/WebConfig.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/clover/habbittracker/global/config/web/WebConfig.java b/src/main/java/com/clover/habbittracker/global/config/web/WebConfig.java index 7980a1b6..7bd6e155 100644 --- a/src/main/java/com/clover/habbittracker/global/config/web/WebConfig.java +++ b/src/main/java/com/clover/habbittracker/global/config/web/WebConfig.java @@ -5,6 +5,7 @@ import org.springframework.http.HttpMethod; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import com.clover.habbittracker.domain.emoji.entity.Emoji; @@ -19,6 +20,12 @@ public void addFormatters(FormatterRegistry registry) { registry.addConverter(new Emoji.Type.StringToEmojiTypeConverter()); } + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/docs/**") + .addResourceLocations("classpath:/static/"); + } + @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") From 5d46836083a1115fb21131b2263c3033d0a49c05 Mon Sep 17 00:00:00 2001 From: kwonjoosung Date: Fri, 4 Aug 2023 21:59:18 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor:=20=EB=8F=99=EC=9D=BC=20path=20?= =?UTF-8?q?=EB=B0=A9=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - /docs -> /test/docs --- .../restdocs/common/CommonDocController.java | 2 +- .../restdocs/enums/EnumDocumentation.java | 34 +++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/test/java/com/clover/habbittracker/global/restdocs/common/CommonDocController.java b/src/test/java/com/clover/habbittracker/global/restdocs/common/CommonDocController.java index d47c3591..c327af77 100644 --- a/src/test/java/com/clover/habbittracker/global/restdocs/common/CommonDocController.java +++ b/src/test/java/com/clover/habbittracker/global/restdocs/common/CommonDocController.java @@ -15,7 +15,7 @@ import com.clover.habbittracker.global.restdocs.enums.EnumResponse; @RestController -@RequestMapping("/docs") +@RequestMapping("/test/docs") public class CommonDocController { @GetMapping("/enums") diff --git a/src/test/java/com/clover/habbittracker/global/restdocs/enums/EnumDocumentation.java b/src/test/java/com/clover/habbittracker/global/restdocs/enums/EnumDocumentation.java index 8ac6b23e..ce295f68 100644 --- a/src/test/java/com/clover/habbittracker/global/restdocs/enums/EnumDocumentation.java +++ b/src/test/java/com/clover/habbittracker/global/restdocs/enums/EnumDocumentation.java @@ -22,10 +22,26 @@ public class EnumDocumentation extends RestDocsSupport { + // 커스텀 템플릿 사용을 위한 함수 + public static CustomResponseFieldsSnippet customResponseFields + (String type, + PayloadSubsectionExtractor subsectionExtractor, + Map attributes, FieldDescriptor... descriptors) { + return new CustomResponseFieldsSnippet(type, subsectionExtractor, Arrays.asList(descriptors), attributes + , true); + } + + // Map으로 넘어온 enumValue를 fieldWithPath로 변경하여 리턴 + private static FieldDescriptor[] enumConvertFieldDescriptor(Map enumValues) { + return enumValues.entrySet().stream() + .map(x -> fieldWithPath(x.getKey()).description(x.getValue())) + .toArray(FieldDescriptor[]::new); + } + @Test public void enums() throws Exception { ResultActions result = this.mockMvc.perform( - get("/docs/enums") + get("/test/docs/enums") .contentType(MediaType.APPLICATION_JSON) ); @@ -54,22 +70,6 @@ public void enums() throws Exception { )); } - // 커스텀 템플릿 사용을 위한 함수 - public static CustomResponseFieldsSnippet customResponseFields - (String type, - PayloadSubsectionExtractor subsectionExtractor, - Map attributes, FieldDescriptor... descriptors) { - return new CustomResponseFieldsSnippet(type, subsectionExtractor, Arrays.asList(descriptors), attributes - , true); - } - - // Map으로 넘어온 enumValue를 fieldWithPath로 변경하여 리턴 - private static FieldDescriptor[] enumConvertFieldDescriptor(Map enumValues) { - return enumValues.entrySet().stream() - .map(x -> fieldWithPath(x.getKey()).description(x.getValue())) - .toArray(FieldDescriptor[]::new); - } - // mvc result 데이터 파싱 private EnumDocs getData(MvcResult result) throws IOException { EnumResponse enumResponse = objectMapper