=> 이렇게 간단하게 나눠지면 정말 좋을 것 같지만, 실무에서는 생각보다 복잡한 이유가 존재한다. 몇가지의 예시를 살펴보자.
@PatchMapping("/{userId}/user-status")
public ResponseEntity<UpdateUserStatusResponseDTO> updateUserStatus(
@PathVariable("userId") UUID id) {
UserStatus userStatus = userStatusService.updateByUserId(id);
return ResponseEntity.ok(userStatusMapper.toUpdateUserStatusResponseDTO(userStatus));
}
@GetMapping("channels/{channelId}/messages")
public ResponseEntity<MessageListDTO> getChannelMessages(@PathVariable("channelId") UUID id) {
List<MessageDTO> messageDTOList = messageService.findAllByChannelId(id);
return ResponseEntity.ok(new MessageListDTO(messageDTOList));
}
@GetMapping("/messages")
public ResponseEntity<MessageListDTO> getChannelMessages(@RequestParam("channelId") UUID id) {
List<MessageDTO> messageDTOList = messageService.findAllByChannelId(id);
return ResponseEntity.ok(new MessageListDTO(messageDTOList));
}
@GetMapping
public ResponseEntity<ReadStatusListDTO> getUserReadStatus(@RequestParam("userId") UUID userId) {
List<ReadStatusDTO> readStatusDTOList = readStatusService.findAllByUserId(userId);
return ResponseEntity.ok(new ReadStatusListDTO(readStatusDTOList));
}
@GetMapping("/{userId}/channels")
public ResponseEntity<ChannelListResponseDTO> getChannelsByUserId(@PathVariable("userId") UUID userId) {
List<FindChannelDTO> findChannelDTO = channelService.findAllByUserId(userId);
return ResponseEntity.ok(new ChannelListResponseDTO(findChannelDTO));
}
@GetMapping
public ResponseEntity<ChannelListResponseDTO> getChannelsByUserId(@RequestParam("userId") UUID userId) {
List<FindChannelDTO> findChannelDTO = channelService.findAllByUserId(userId);
return ResponseEntity.ok(new ChannelListResponseDTO(findChannelDTO));
}

@PostMapping("/upload")
public String upload(
@RequestParam String name,
@RequestParam MultipartFile file
) {
...
}
@PostMapping("/upload")
public String upload(
@RequestPart("info") UserDto info, // JSON
@RequestPart("file") MultipartFile file
) {
...
}