Skip to content

Commit e1a2b9a

Browse files
authored
[Docs] multipart/form-data 요청 형식 문서화
2 parents 48ad47d + 4b25c01 commit e1a2b9a

File tree

5 files changed

+37
-6
lines changed

5 files changed

+37
-6
lines changed

src/main/java/eatda/controller/story/StoryRegisterRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package eatda.controller.story;
22

33
public record StoryRegisterRequest(
4-
String query,
4+
String storeName,
55
String storeKakaoId,
66
String description
77
) {

src/main/java/eatda/service/story/StoryService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public class StoryService {
4040
@Transactional
4141
public StoryRegisterResponse registerStory(StoryRegisterRequest request, MultipartFile imageFile, Long memberId) {
4242
Member member = memberRepository.getById(memberId);
43-
List<StoreSearchResult> searchResponses = mapClient.searchShops(request.query());
43+
List<StoreSearchResult> searchResponses = mapClient.searchShops(request.storeName());
4444
FilteredSearchResult matchedStore = filteredSearchResponse(searchResponses, request.storeKakaoId());
4545
ImageKey imageKey = imageStorage.upload(new Image(ImageDomain.STORY, imageFile));
4646

src/test/java/eatda/document/store/CheerDocumentTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,25 @@ public class CheerDocumentTest extends BaseDocumentTest {
3939
@Nested
4040
class RegisterCheer {
4141

42+
private static final String REQUEST_DESCRIPTION_MARKDOWN = """
43+
- 요청 형식 : multipart/form-data
44+
- 요청 field
45+
- `image` : 응원 이미지 (선택, 최대 5MB, 허용 타입 : image/jpg, image/jpeg, image/png
46+
- `request` : 응원 등록 요청 정보 (필수, 허용 타입 : application/json)
47+
- request body 예시
48+
```json
49+
{
50+
"storeKakaoId": "123", // 가게 카카오 ID
51+
"storeName": "농민백암순대 본점", // 가게 이름
52+
"description": "너무 맛있어요! 준환님 추천 맛집!" // 응원 내용
53+
}
54+
```
55+
""";
56+
4257
RestDocsRequest requestDocument = request()
4358
.tag(Tag.STORE_API)
4459
.summary("응원 등록")
60+
.description(REQUEST_DESCRIPTION_MARKDOWN)
4561
.requestHeader(
4662
headerWithName("Authorization").description("인증 토큰")
4763
).multipartField(

src/test/java/eatda/document/story/StoryDocumentTest.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,32 @@ public class StoryDocumentTest extends BaseDocumentTest {
3333
@Nested
3434
class RegisterStory {
3535

36+
private static final String REQUEST_DESCRIPTION_MARKDOWN = """
37+
- 요청 형식 : multipart/form-data
38+
- 요청 field
39+
- `image` : 스토리 이미지 (필수, 최대 5MB, 허용 타입 : image/jpg, image/jpeg, image/png
40+
- `request` : 스토리 등록 요청 정보 (필수, 허용 타입 : application/json)
41+
- request body 예시
42+
```json
43+
{
44+
"storeKakaoId": "123", // 가게 카카오 ID
45+
"storeName": "농민백암순대 본점", // 가게 이름
46+
"description": "너무 맛있어요! 준환님 추천 맛집!" // 스토리 내용
47+
}
48+
```
49+
""";
50+
3651
RestDocsRequest requestDocument = request()
3752
.tag(Tag.STORY_API)
3853
.summary("스토리 등록")
39-
.description("스토리와 이미지를 multipart/form-data로 등록합니다.")
54+
.description(REQUEST_DESCRIPTION_MARKDOWN)
4055
.requestHeader(
4156
headerWithName(HttpHeaders.AUTHORIZATION).description("액세스 토큰")
4257
).multipartField(
4358
partWithName("image").description("스토리 이미지 (필수)"),
4459
partWithName("request").description("스토리 등록 요청 정보")
4560
).requestBodyField("request",
46-
fieldWithPath("query").description("스토리 검색 쿼리"),
61+
fieldWithPath("storeName").description("가게 이름"),
4762
fieldWithPath("storeKakaoId").description("가게의 카카오 ID"),
4863
fieldWithPath("description").description("스토리 내용 (필수)")
4964
);

src/test/java/eatda/service/story/StoryServiceTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class RegisterStory {
4545
"곱창집", "http://example.com",
4646
"서울 강남구", "서울 강남구", 37.0, 127.0
4747
);
48-
doReturn(List.of(store)).when(mapClient).searchShops(request.query());
48+
doReturn(List.of(store)).when(mapClient).searchShops(request.storeName());
4949

5050
var response = storyService.registerStory(request, imageFile, member.getId());
5151

@@ -58,7 +58,7 @@ class RegisterStory {
5858
StoryRegisterRequest request = new StoryRegisterRequest("곱창", "999", "미쳤다 여기");
5959

6060
MultipartFile image = mock(MultipartFile.class);
61-
doReturn(Collections.emptyList()).when(mapClient).searchShops(request.query());
61+
doReturn(Collections.emptyList()).when(mapClient).searchShops(request.storeName());
6262

6363
assertThatThrownBy(() -> storyService.registerStory(request, image, member.getId()))
6464
.isInstanceOf(BusinessException.class)

0 commit comments

Comments
 (0)