반응형
작성하는 내용은 저의 주관적인 의견이 반영된 내용입니다.
1. Service class에서 return 값을 DTO 객체 대신 특정 값으로 보내기(int 등)
- 기존에 코드를 작성했던 방식
Service 코드 중 일부
/* 채팅방 생성 */
public CreateRoomSuccessDto createRoom(RoomDto roomDto) {
// Dto -> Entity
Room room = roomDto.toRoom();
// save db
try {
room.setRoomId(roomReqDto.getRoomId()); // Assign a value to the ID field manually
roomRepository.save(room);
} catch (Exception e) {
throw new CustomException(SERVER_ERROR);
}
return CreateRoomSuccessDto.builder()
.status(201)
.message(roomDto.getRoomId() + " 방이 정상적으로 생성되었습니다")
.build();
}
Controller 코드 중 일부
@PostMapping(value = "/room", produces = MediaType.APPLICATION_JSON_VALUE)
public CreateRoomSuccessDto createRoom(@Valid @RequestBody RoomDto roomDto) {
return roomService.createRoom(roomDto);
}
코드 수정 후
- Controller, Service의 역할을 명확하게 분리할 수 있다.
Service 코드 중 일부
public int createRoom(RoomReqDto roomReqDto) {
// Dto -> Entity
Room room = roomReqDto.toRoom();
// save db
try {
room.setRoomId(roomReqDto.getRoomId()); // Assign a value to the ID field manually
roomRepository.save(room);
} catch (Exception e) {
return HttpStatus.INTERNAL_SERVER_ERROR.value();
}
return HttpStatus.CREATED.value();
}
Controller 코드 중 일부
@PostMapping(value = "/room", produces = MediaType.APPLICATION_JSON_VALUE)
public RoomRespDto createRoom(@Valid @RequestBody RoomReqDto roomReqDto) {
int result = roomService.createRoom(roomReqDto);
String roomId = roomReqDto.getRoomId();
if (result == HttpStatus.CREATED.value()) {
return RoomRespDto.builder()
.status(result)
.message("방이 정상적으로 생성되었습니다")
.data(roomId)
.build();
} else {
throw new CustomException(SERVER_ERROR);
}
}
참고 링크
반응형