Skip to content

Commit a7e344e

Browse files
authored
Merge pull request #91 from SWU-Elixir/docs/87-update-swagger-data-example
docs: Swagger 문서의 data 필드에 실제 응답 예시 추가
2 parents 29f80aa + a7d9a67 commit a7e344e

File tree

5 files changed

+645
-62
lines changed

5 files changed

+645
-62
lines changed

src/main/java/BE_Elixir/Elixir/domain/challenge/controller/api/ChallengeApi.java

Lines changed: 139 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,36 @@ public interface ChallengeApi {
3232
content = @Content(schema = @Schema(implementation = CommonResponse.class),
3333
examples = @ExampleObject(value = """
3434
{
35-
"status": 201,
36-
"code": "201 OK",
37-
"message": "챌린지 등록 성공",
38-
"data": true
35+
"status": 200,
36+
"code": "200 OK",
37+
"message": "챌린지 등록 완료",
38+
"data": {
39+
"id": 6,
40+
"name": "챌린지 명",
41+
"description": "챌린지 설명",
42+
"purpose": "챌린지 목적",
43+
"month": 5,
44+
"year": 2025,
45+
"step1Goal1Type": "DIET_SEASONAL_ONCE",
46+
"step1Goal2Type": "DIET_LUNCH",
47+
"step2Goal1Type": "DIET_SEASONAL_ONCE",
48+
"step2Goal2Type": "DIET_BREAKFAST",
49+
"step3Goal1Type": "DIET_SEASONAL_ONCE",
50+
"step3Goal2Type": "DIET_THREE_MEALS",
51+
"step4Goal1Type": "RECIPE_SEASONAL_ONCE",
52+
"step4Goal2Type": "DIET_60_A_MONTH",
53+
"step1Goal1Desc": "하루 한 끼 재철 식재료를 포함한 식사",
54+
"step1Goal2Desc": "점심 챙겨 먹기",
55+
"step2Goal1Desc": "하루 한 끼 재철 식재료를 포함한 식사",
56+
"step2Goal2Desc": "아침 챙겨 먹기",
57+
"step3Goal1Desc": "하루 한 끼 재철 식재료를 포함한 식사",
58+
"step3Goal2Desc": "하루 3끼 식단 기록",
59+
"step4Goal1Desc": "재철 식재료를 활용한 레시피 작성",
60+
"step4Goal2Desc": "1달 동안 누적 60끼 식단 기록",
61+
"achievementName": "업적 명",
62+
"achievementImageUrl": "업적 달성 이미지",
63+
"grayAchievementImageUrl": "업적 미달성 이미지"
64+
}
3965
}
4066
"""))),
4167
@ApiResponse(responseCode = "500", description = "챌린지 등록 실패",
@@ -57,8 +83,44 @@ ResponseEntity<CommonResponse<ChallengeResponseDTO>> registerAchievement(
5783
{
5884
"status": 200,
5985
"code": "200 OK",
60-
"message": "연도 별 챌린지 조회 성공",
61-
"data": true
86+
"message": "2025년도 챌린지 목록 조회 성공",
87+
"data": [
88+
{
89+
"id": 1,
90+
"name": "2월 챌린지",
91+
"month": 2,
92+
"year": 2025,
93+
"achievementName": "비타민 수호자"
94+
},
95+
{
96+
"id": 2,
97+
"name": "3월 챌린지",
98+
"month": 3,
99+
"year": 2025,
100+
"achievementName": "비타민 수호자"
101+
},
102+
{
103+
"id": 3,
104+
"name": "4월 챌린지",
105+
"month": 4,
106+
"year": 2025,
107+
"achievementName": "비타민 수호자"
108+
},
109+
{
110+
"id": 4,
111+
"name": "5월 봄맞이 챌린지",
112+
"month": 5,
113+
"year": 2025,
114+
"achievementName": "비타민 수호자"
115+
},
116+
{
117+
"id": 5,
118+
"name": "6월 챌린지",
119+
"month": 6,
120+
"year": 2025,
121+
"achievementName": "비타민 수호자"
122+
}
123+
]
62124
}
63125
"""))),
64126
@ApiResponse(responseCode = "500", description = "연도 별 챌린지 조회 실패",
@@ -79,8 +141,27 @@ ResponseEntity<CommonResponse<List<ChallengeListResponseDTO>>> getChallengesByYe
79141
{
80142
"status": 200,
81143
"code": "200 OK",
82-
"message": "특정 챌린지 조회 성공",
83-
"data": true
144+
"message": "챌린지 상세 조회 성공",
145+
"data": {
146+
"ingredients": [
147+
"냉이",
148+
"달래",
149+
"쑥"
150+
],
151+
"name": "3월 챌린지",
152+
"period": "3월 1일 ~ 3월 31일",
153+
"description": "설명- 3월 챌린지입니다.(식재료: 쑥 id: 1142)",
154+
"purpose": "목적- 3월 챌린지입니다.",
155+
"step1Goal1Desc": "하루 한 끼 재철 식재료를 포함한 식사",
156+
"step1Goal2Desc": "점심 챙겨 먹기",
157+
"step2Goal1Desc": "하루 한 끼 재철 식재료를 포함한 식사",
158+
"step2Goal2Desc": "아침 챙겨 먹기",
159+
"step3Goal1Desc": "하루 한 끼 재철 식재료를 포함한 식사",
160+
"step3Goal2Desc": "하루 3끼 식단 기록",
161+
"step4Goal1Desc": "재철 식재료를 활용한 레시피 작성",
162+
"step4Goal2Desc": "1달 동안 누적 60끼 식단 기록",
163+
"achievementName": "비타민 수호자"
164+
}
84165
}
85166
"""))),
86167
@ApiResponse(responseCode = "500", description = "특정 챌린지 조회 실패",
@@ -100,8 +181,28 @@ ResponseEntity<CommonResponse<ChallengeDetailResponseDTO>> getChallengeDetail(
100181
{
101182
"status": 200,
102183
"code": "200 OK",
103-
"message": "사용자의 현재 진행 상황 조회 성공",
104-
"data": true
184+
"message": "A@example.com 사용자의 현재 진행 상황 조회 성공",
185+
"data": {
186+
"challengeId": 5,
187+
"name": "6월 챌린지",
188+
"year": 2025,
189+
"month": 6,
190+
"step1Goal1Achieved": false,
191+
"step1Goal2Achieved": false,
192+
"step2Goal1Active": false,
193+
"step2Goal2Active": false,
194+
"step2Goal1Achieved": false,
195+
"step2Goal2Achieved": false,
196+
"step3Goal1Active": false,
197+
"step3Goal2Active": false,
198+
"step3Goal1Achieved": false,
199+
"step3Goal2Achieved": false,
200+
"step4Goal1Active": false,
201+
"step4Goal2Active": false,
202+
"step4Goal1Achieved": false,
203+
"step4Goal2Achieved": false,
204+
"challengeCompleted": false
205+
}
105206
}
106207
"""))),
107208
@ApiResponse(responseCode = "500", description = "사용자의 현재 진행 상황 조회 실패",
@@ -122,7 +223,12 @@ ResponseEntity<CommonResponse<ChallengeProgressResponseDTO>> getProgress(
122223
"status": 200,
123224
"code": "200 OK",
124225
"message": "챌린지 최종 완료 여부 조회 성공",
125-
"data": true
226+
"data": {
227+
"achievementName": "비타민 수호자",
228+
"message": "아직 챌린지를 달성하지 못했습니다.",
229+
"achievementImageUrl": null,
230+
"challengeCompleted": false
231+
}
126232
}
127233
"""))),
128234
@ApiResponse(responseCode = "500", description = "챌린지 최종 완료 여부 조회 실패",
@@ -143,8 +249,28 @@ ResponseEntity<CommonResponse<ChallengeCompletedResponseDTO>> getChallengeComple
143249
{
144250
"status": 200,
145251
"code": "200 OK",
146-
"message": "사용자의 이전 챌린지 진행 상황 조회 성공",
147-
"data": true
252+
"message": "A@example.com 사용자의 이전 챌린지 진행 상황 조회 성공",
253+
"data": {
254+
"challengeId": 2,
255+
"name": "3월 챌린지",
256+
"year": 2025,
257+
"month": 3,
258+
"step1Goal1Achieved": true,
259+
"step1Goal2Achieved": true,
260+
"step2Goal1Active": true,
261+
"step2Goal2Active": true,
262+
"step2Goal1Achieved": true,
263+
"step2Goal2Achieved": true,
264+
"step3Goal1Active": true,
265+
"step3Goal2Active": true,
266+
"step3Goal1Achieved": true,
267+
"step3Goal2Achieved": true,
268+
"step4Goal1Active": true,
269+
"step4Goal2Active": true,
270+
"step4Goal1Achieved": true,
271+
"step4Goal2Achieved": true,
272+
"challengeCompleted": true
273+
}
148274
}
149275
"""))),
150276
@ApiResponse(responseCode = "500", description = "사용자의 이전 챌린지 진행 상황 조회 실패",

0 commit comments

Comments
 (0)