
위 화면 설계서 이미지와 같이,
웹 사이트 회원들끼리 "Healing Message"게시글을 주고받는 도메인이다.
우리가 흔히 아는 인스타그램과 비슷한 서비스 구조이다.
해당 도메인을 구현하기 위해서 3개의 데이터 테이블을 설계하였다.
이로써 해당 서비스에서는 사용자들은 자유롭게 힐링 메시지 게시글을 올리고,
좋아요 누르기 기능과 댓글 달기 기능을 통해 의견을 주고받을 수 있으며,
좋아요를 누른 게시글들과 본인이 업로드한 게시글들은 추후 마이페이지에서 조회할 수 있다.
컨트롤러에서 DTO를 받을때, 깜빡하고 @RequestBody를 쓰지 않아서,
DTO 값이 전달되지 않아 여기저기 로그를 찍어보는 실수를 범하였다.
자주 하는 실수인데,
@RequestBody 실수는 이제 그만하자.
/**
* 힐링 메시지 쉐어링 API
* @param request 사용자 요청
* @return 생성 완료 메시지
*/
@Operation(summary = " 힐링 메시지 쉐어링 API ", description = "")
@PostMapping("")
public ResponseEntity<String> create(HttpServletRequest request, @RequestBody HealingMessageCreateRequest healingMessageCreateRequest){
/* 힐링 메시지 쉐어링 */
healingMessageService.create(request,healingMessageCreateRequest);
return ResponseEntity.ok("힐링 메세지 쉐어링 완료");
}
/**
* 힐링 메세지 쉐어링 메서드
* @param request 사용자 요청
* @param healingMessageCreateRequest 힐링 메시지 입력 데이터
*/
void create(HttpServletRequest request, HealingMessageCreateRequest healingMessageCreateRequest);
/**
* 힐링 메시지 쉐어링 메서드
* @param request 사용자 요청
* @param healingMessageCreateRequest 힐링 메시지 입력 데이터
*/
@Override
public void create(HttpServletRequest request, HealingMessageCreateRequest healingMessageCreateRequest) {
/* 사용자 고유 번호 조회 */
Long userNumber = jwtService.extractUserNumberFromRequest(request);
/* 힐링 메시지 게시글 저장 */
healingMessageMapper.create(userNumber,
healingMessageCreateRequest.title(),
healingMessageCreateRequest.imagePath(),
healingMessageCreateRequest.content());
}
/**
* 힐링 메세지 쉐어링
* @param userNumber 사용자 고유 번호
* @param title 힐링 메시지 제목
* @param imagePath 힐링 메시지 게시물의 사진
* @param content 힐링 메시지 본문
*/
void create(@Param("userNumber") Long userNumber,
@Param("title") String title,
@Param("imagePath") String imagePath,
@Param("content") String content);
<!-- 힐링 메시지 생성 -->
<insert id="create" parameterType="map">
INSERT INTO healing_message (
userNumber,
title,
imagePath,
content,
createdDate,
likes
)
VALUES (
#{userNumber},
#{title},
#{imagePath},
#{content},
NOW(),
0
)
</insert>

