Skip to content

Commit 04195f1

Browse files
authored
Merge pull request #84 from prgrms-web-devcourse-final-project/feature/EA3-74-calender-api
[EA3-74] refactor : 컨트롤러 restfull 리팩터링
2 parents ca5e0a0 + e3da928 commit 04195f1

File tree

4 files changed

+71
-59
lines changed

4 files changed

+71
-59
lines changed

src/main/java/grep/neogul_coder/domain/calender/controller/PersonalCalenderController.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,48 +8,50 @@
88
import org.springframework.web.bind.annotation.*;
99

1010
@RestController
11-
@RequestMapping("/api/calendar/personal")
11+
@RequestMapping("/api/users/{userId}/calendar")
1212
public class PersonalCalenderController implements PersonalCalenderSpecification {
1313

1414
@PostMapping
15-
public ApiResponse<Void> create(@RequestParam Long userId, @RequestBody PersonalCalenderRequest request) {
15+
public ApiResponse<Void> create(
16+
@PathVariable("userId") Long userId,
17+
@RequestBody PersonalCalenderRequest request) {
1618
return ApiResponse.noContent();
1719
}
1820

1921
@GetMapping
20-
public ApiResponse<List<PersonalCalenderResponse>> findAll(@RequestParam Long userId) {
22+
public ApiResponse<List<PersonalCalenderResponse>> findAll(@PathVariable("userId") Long userId) {
2123
return ApiResponse.success(List.of(new PersonalCalenderResponse()));
2224
}
2325

2426

2527
@GetMapping("/{scheduleId}")
2628
public ApiResponse<PersonalCalenderResponse> findOne(
27-
@PathVariable("scheduleId") Long scheduleId,
28-
@RequestParam Long userId
29+
@PathVariable("userId") Long userId,
30+
@PathVariable("scheduleId") Long scheduleId
2931
) {
3032
return ApiResponse.success(new PersonalCalenderResponse());
3133
}
3234
@GetMapping("/day")
3335
public ApiResponse<List<PersonalCalenderResponse>> findByDate(
34-
@RequestParam Long userId,
36+
@PathVariable("userId") Long userId,
3537
@RequestParam String date
3638
) {
3739
return ApiResponse.success(List.of(new PersonalCalenderResponse()));
3840
}
3941

4042
@PutMapping("/{scheduleId}")
4143
public ApiResponse<Void> update(
44+
@PathVariable("userId") Long userId,
4245
@PathVariable("scheduleId") Long scheduleId,
43-
@RequestParam Long userId,
4446
@RequestBody PersonalCalenderRequest request
4547
) {
4648
return ApiResponse.noContent();
4749
}
4850

4951
@DeleteMapping("/{scheduleId}")
5052
public ApiResponse<Void> delete(
51-
@PathVariable("scheduleId") Long scheduleId,
52-
@RequestParam Long userId
53+
@PathVariable("userId") Long userId,
54+
@PathVariable("scheduleId") Long scheduleId
5355
) {
5456
return ApiResponse.noContent();
5557
}

src/main/java/grep/neogul_coder/domain/calender/controller/PersonalCalenderSpecification.java

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,65 +18,72 @@ public interface PersonalCalenderSpecification {
1818

1919
@Operation(
2020
summary = "개인 일정 생성",
21-
description = "사용자의 개인 일정을 생성합니다.\n\n예: `/api/calendar/personal?userId=123`"
21+
description = "사용자의 개인 일정을 생성합니다.\n\n예: `/api/users/{userId}/calendar`"
2222
)
2323
ApiResponse<Void> create(
24-
@Parameter(name = "userId", description = "일정을 생성할 사용자 ID", required = true, in = ParameterIn.QUERY)
25-
@RequestParam Long userId,
24+
@Parameter(name = "userId", description = "사용자 ID", required = true, in = ParameterIn.PATH)
25+
@PathVariable("userId") Long userId,
2626
@RequestBody PersonalCalenderRequest request
2727
);
2828

2929
@Operation(
3030
summary = "개인 일정 전체 조회",
31-
description = "사용자 ID 기준으로 모든 개인 일정을 조회합니다.\n\n예: `/api/calendar/personal?userId=123`"
31+
description = "사용자 ID 기준으로 모든 개인 일정을 조회합니다.\n\n예: `/api/users/{userId}/calendar`"
3232
)
3333
ApiResponse<List<PersonalCalenderResponse>> findAll(
34-
@Parameter(name = "userId", description = "일정을 조회할 사용자 ID", required = true, in = ParameterIn.QUERY)
35-
@RequestParam Long userId
34+
@Parameter(name = "userId", description = "사용자 ID", required = true, in = ParameterIn.PATH)
35+
@PathVariable("userId") Long userId
3636
);
3737

3838
@Operation(
3939
summary = "개인 일정 상세 조회",
40-
description = "사용자의 특정 일정 상세정보를 조회합니다.\n\n예: `/api/calendar/personal/{scheduleId}?userId=123`"
40+
description = "사용자의 특정 일정 상세정보를 조회합니다.\n\n예: `/api/users/{userId}/calendar/{scheduleId}`"
4141
)
4242
ApiResponse<PersonalCalenderResponse> findOne(
43-
@PathVariable("scheduleId") Long scheduleId,
44-
@Parameter(name = "userId", description = "사용자 ID", required = true, in = ParameterIn.QUERY)
45-
@RequestParam Long userId
43+
@Parameter(name = "userId", description = "사용자 ID", required = true, in = ParameterIn.PATH)
44+
@PathVariable("userId") Long userId,
45+
46+
@Parameter(name = "scheduleId", description = "일정 ID", required = true, in = ParameterIn.PATH)
47+
@PathVariable("scheduleId") Long scheduleId
4648
);
4749

4850
@Operation(
4951
summary = "개인 일정 날짜별 조회",
5052
description = "특정 사용자 ID와 날짜에 해당하는 모든 개인 일정을 조회합니다.\n\n" +
51-
"예: `/api/calendar/personal/day?userId=1&date=2025-07-17`"
53+
"예: `/api/users/{userId}/calendar/day?date=2025-07-17`"
5254
)
5355
ApiResponse<List<PersonalCalenderResponse>> findByDate(
54-
@Parameter(name = "userId", description = "사용자 ID", required = true, in = ParameterIn.QUERY)
55-
@RequestParam Long userId,
56+
@Parameter(name = "userId", description = "사용자 ID", required = true, in = ParameterIn.PATH)
57+
@PathVariable("userId") Long userId,
5658

57-
@Parameter(name = "date", description = "조회할 날짜 (예: 2025-07-17)", required = true, in = ParameterIn.QUERY)
59+
@Parameter(name = "date", description = "조회할 날짜 (yyyy-MM-dd)", required = true, in = ParameterIn.QUERY)
5860
@RequestParam String date
5961
);
6062

6163

6264
@Operation(
6365
summary = "개인 일정 수정",
64-
description = "사용자의 특정 일정을 수정합니다.\n\n예: `/api/calendar/personal/{scheduleId}?userId=123`"
66+
description = "사용자의 특정 일정을 수정합니다.\n\n예: `/api/users/{userId}/calendar/{scheduleId}`"
6567
)
6668
ApiResponse<Void> update(
69+
@Parameter(name = "userId", description = "사용자 ID", required = true, in = ParameterIn.PATH)
70+
@PathVariable("userId") Long userId,
71+
72+
@Parameter(name = "scheduleId", description = "일정 ID", required = true, in = ParameterIn.PATH)
6773
@PathVariable("scheduleId") Long scheduleId,
68-
@Parameter(name = "userId", description = "사용자 ID", required = true, in = ParameterIn.QUERY)
69-
@RequestParam Long userId,
74+
7075
@RequestBody PersonalCalenderRequest request
7176
);
7277

7378
@Operation(
7479
summary = "개인 일정 삭제",
75-
description = "사용자의 특정 일정을 삭제합니다.\n\n예: `/api/calendar/personal/{scheduleId}?userId=123`"
80+
description = "사용자의 특정 일정을 삭제합니다.\n\n예: `/api/users/{userId}/calendar/{scheduleId}`"
7681
)
7782
ApiResponse<Void> delete(
78-
@PathVariable("scheduleId") Long scheduleId,
79-
@Parameter(name = "userId", description = "사용자 ID", required = true, in = ParameterIn.QUERY)
80-
@RequestParam Long userId
83+
@Parameter(name = "userId", description = "사용자 ID", required = true, in = ParameterIn.PATH)
84+
@PathVariable("userId") Long userId,
85+
86+
@Parameter(name = "scheduleId", description = "일정 ID", required = true, in = ParameterIn.PATH)
87+
@PathVariable("scheduleId") Long scheduleId
8188
);
8289
}

src/main/java/grep/neogul_coder/domain/calender/controller/TeamCalenderController.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,49 +9,49 @@
99
import java.util.List;
1010

1111
@RestController
12-
@RequestMapping("/api/calendar/team")
12+
@RequestMapping("/api/teams/{teamId}/calendar")
1313
public class TeamCalenderController implements TeamCalenderSpecification {
1414

1515
@PostMapping
16-
public ApiResponse<Void> create(@RequestParam Long teamId, @RequestBody TeamCalenderRequest request) {
16+
public ApiResponse<Void> create(@PathVariable("teamId") Long teamId, @RequestBody TeamCalenderRequest request) {
1717
return ApiResponse.noContent();
1818
}
1919

2020
@GetMapping
21-
public ApiResponse<List<TeamCalenderResponse>> findAll(@RequestParam Long teamId) {
21+
public ApiResponse<List<TeamCalenderResponse>> findAll(@PathVariable("teamId") Long teamId) {
2222
return ApiResponse.success(List.of(new TeamCalenderResponse()));
2323
}
2424

2525
@GetMapping("/{scheduleId}")
2626
public ApiResponse<TeamCalenderResponse> findOne(
27-
@PathVariable("scheduleId") Long scheduleId,
28-
@RequestParam Long teamId
27+
@PathVariable("teamId") Long teamId,
28+
@PathVariable("scheduleId") Long scheduleId
2929
) {
3030
return ApiResponse.success(new TeamCalenderResponse());
3131
}
3232

3333

3434
@GetMapping("/day")
3535
public ApiResponse<List<TeamCalenderResponse>> findByDate(
36-
@RequestParam Long teamId,
36+
@PathVariable("teamId") Long teamId,
3737
@RequestParam String date
3838
) {
3939
return ApiResponse.success(List.of(new TeamCalenderResponse()));
4040
}
4141

4242
@PutMapping("/{scheduleId}")
4343
public ApiResponse<Void> update(
44+
@PathVariable("teamId") Long teamId,
4445
@PathVariable("scheduleId") Long scheduleId,
45-
@RequestParam Long teamId,
4646
@RequestBody TeamCalenderRequest request
4747
) {
4848
return ApiResponse.noContent();
4949
}
5050

5151
@DeleteMapping("/{scheduleId}")
5252
public ApiResponse<Void> delete(
53-
@PathVariable("scheduleId") Long scheduleId,
54-
@RequestParam Long teamId
53+
@PathVariable("teamId") Long teamId,
54+
@PathVariable("scheduleId") Long scheduleId
5555
) {
5656
return ApiResponse.noContent();
5757
}

src/main/java/grep/neogul_coder/domain/calender/controller/TeamCalenderSpecification.java

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,34 +19,35 @@ public interface TeamCalenderSpecification {
1919
@Operation(
2020
summary = "팀 일정 전체 조회",
2121
description = "특정 팀 ID에 해당하는 모든 일정을 조회합니다.\n\n" +
22-
"예: `/api/calendar/team?teamId=123`"
22+
"예: `/api/teams/{teamId}/calendar`"
2323
)
2424
ApiResponse<List<TeamCalenderResponse>> findAll(
25-
@Parameter(name = "teamId", description = "조회할 팀 ID", required = true, in = ParameterIn.QUERY)
26-
@RequestParam Long teamId
25+
@Parameter(name = "teamId", description = "조회할 팀 ID", required = true, in = ParameterIn.PATH)
26+
@PathVariable("teamId") Long teamId
2727
);
2828

2929

3030
@Operation(
3131
summary = "팀 일정 상세 조회",
3232
description = "특정 팀의 특정 일정 상세정보를 조회합니다.\n\n" +
33-
"예: `/api/calendar/team/{scheduleId}?teamId=123`"
33+
"예: `/api/teams/{teamId}/calendar/{scheduleId}`"
3434
)
3535
ApiResponse<TeamCalenderResponse> findOne(
36-
@PathVariable("scheduleId") Long scheduleId,
37-
@Parameter(name = "teamId", description = "조회할 팀 ID", required = true, in = ParameterIn.QUERY)
38-
@RequestParam Long teamId
36+
@Parameter(name = "teamId", description = "팀 ID", required = true, in = ParameterIn.PATH)
37+
@PathVariable("teamId") Long teamId,
38+
@Parameter(name = "scheduleId", description = "일정 ID", required = true, in = ParameterIn.PATH)
39+
@PathVariable("scheduleId") Long scheduleId
3940
);
4041

4142

4243
@Operation(
4344
summary = "팀 일정 날짜별 조회",
4445
description = "특정 팀의 특정 날짜(yyyy-MM-dd)에 등록된 일정들을 조회합니다.\n\n" +
45-
"예: `/api/calendar/team/day?teamId=123&date=2025-07-17`"
46+
"예: `/api/teams/{teamId}/calendar/day?date=2025-07-17`"
4647
)
4748
ApiResponse<List<TeamCalenderResponse>> findByDate(
48-
@Parameter(name = "teamId", description = "조회할 팀 ID", required = true, in = ParameterIn.QUERY)
49-
@RequestParam Long teamId,
49+
@Parameter(name = "teamId", description = "조회할 팀 ID", required = true, in = ParameterIn.PATH)
50+
@PathVariable("teamId") Long teamId,
5051

5152
@Parameter(name = "date", description = "조회할 날짜 (yyyy-MM-dd)", required = true, in = ParameterIn.QUERY)
5253
@RequestParam String date
@@ -56,34 +57,36 @@ ApiResponse<List<TeamCalenderResponse>> findByDate(
5657
@Operation(
5758
summary = "팀 일정 생성",
5859
description = "특정 팀 ID에 새로운 일정을 생성합니다.\n\n" +
59-
"예: `/api/calendar/team?teamId=123` "
60+
"예: `/api/teams/{teamId}/calendar`"
6061
)
6162
ApiResponse<Void> create(
62-
@Parameter(name = "teamId", description = "일정을 생성할 팀 ID", required = true, in = ParameterIn.QUERY)
63-
@RequestParam Long teamId,
63+
@Parameter(name = "teamId", description = "일정을 생성할 팀 ID", required = true, in = ParameterIn.PATH)
64+
@PathVariable("teamId") Long teamId,
6465
@RequestBody TeamCalenderRequest request
6566
);
6667

6768
@Operation(
6869
summary = "팀 일정 수정",
6970
description = "기존 팀 일정을 수정합니다.\n\n" +
70-
"예: `/api/calendar/team/{scheduleId}?teamId=123`"
71+
"예: `/api/teams/{teamId}/calendar/{scheduleId}`"
7172
)
7273
ApiResponse<Void> update(
74+
@Parameter(name = "teamId", description = "팀 ID", required = true, in = ParameterIn.PATH)
75+
@PathVariable("teamId") Long teamId,
76+
@Parameter(name = "scheduleId", description = "일정 ID", required = true, in = ParameterIn.PATH)
7377
@PathVariable("scheduleId") Long scheduleId,
74-
@Parameter(name = "teamId", description = "수정할 팀 ID", required = true, in = ParameterIn.QUERY)
75-
@RequestParam Long teamId,
7678
@RequestBody TeamCalenderRequest request
7779
);
7880

7981
@Operation(
8082
summary = "팀 일정 삭제",
8183
description = "기존 팀 일정을 삭제합니다.\n\n" +
82-
"예: `/api/calendar/team/{scheduleId}?teamId=123`"
84+
"예: `/api/teams/{teamId}/calendar/{scheduleId}`"
8385
)
8486
ApiResponse<Void> delete(
85-
@PathVariable("scheduleId") Long scheduleId,
86-
@Parameter(name = "teamId", description = "삭제할 팀 ID", required = true, in = ParameterIn.QUERY)
87-
@RequestParam Long teamId
87+
@Parameter(name = "teamId", description = "팀 ID", required = true, in = ParameterIn.PATH)
88+
@PathVariable("teamId") Long teamId,
89+
@Parameter(name = "scheduleId", description = "일정 ID", required = true, in = ParameterIn.PATH)
90+
@PathVariable("scheduleId") Long scheduleId
8891
);
8992
}

0 commit comments

Comments
 (0)