[힐링 메시지 쉐어링 API]

1. 힐링 메시지 쉐어링 API


위 화면 설계서 이미지와 같이,
웹 사이트 회원들끼리 "Healing Message"게시글을 주고받는 도메인이다.

우리가 흔히 아는 인스타그램과 비슷한 서비스 구조이다.

해당 도메인을 구현하기 위해서 3개의 데이터 테이블을 설계하였다.

  1. healing_message 테이블
  2. healing_message_comment 테이블
  3. healing_message_like 테이블

이로써 해당 서비스에서는 사용자들은 자유롭게 힐링 메시지 게시글을 올리고,
좋아요 누르기 기능과 댓글 달기 기능을 통해 의견을 주고받을 수 있으며,
좋아요를 누른 게시글들과 본인이 업로드한 게시글들은 추후 마이페이지에서 조회할 수 있다.

2. Prolem Solving

컨트롤러에서 DTO를 받을때, 깜빡하고 @RequestBody를 쓰지 않아서,
DTO 값이 전달되지 않아 여기저기 로그를 찍어보는 실수를 범하였다.

자주 하는 실수인데,
@RequestBody 실수는 이제 그만하자.

3. 구현

3.1 Controller

 /**
     * 힐링 메시지 쉐어링 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("힐링 메세지 쉐어링 완료");
    }

3.2 Service

3.2.1 Interface

 /**
     * 힐링 메세지 쉐어링 메서드
     * @param request 사용자 요청
     * @param healingMessageCreateRequest 힐링 메시지 입력 데이터
     */
    void create(HttpServletRequest request, HealingMessageCreateRequest healingMessageCreateRequest);

3.2.2 Implemnets

/**
     * 힐링 메시지 쉐어링 메서드
     * @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());

    }

3.3 Mapper

3.3.1 Mapper

 /**
     * 힐링 메세지 쉐어링
     * @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);

3.3.2 Xml

  <!-- 힐링 메시지 생성 -->
    <insert id="create" parameterType="map">
        INSERT INTO healing_message (
            userNumber,
            title,
            imagePath,
            content,
            createdDate,
            likes
        )
        VALUES (
                   #{userNumber},
                   #{title},
                   #{imagePath},
                   #{content},
                   NOW(),
                   0
               )
    </insert>

4. 결과

profile
내가 있는 그 조직에서 가장 성실하기만 하자

0개의 댓글