1. 댓글 달기 API

서비스의 공지사항 및 이벤트가 올라오는 공지 게시판에 댓글을 다는 API이다.

2. Trouble Solving

이전에 healing message 게시판에서 댓글 달기 API를 구현해봐서 어렵지는 않았다.

다만 고민이 조금 있었다.
너무 간단한 기능을 구현하는데, 코드 파일을 5개나 만들어서 너무 다단계로 구현하는 것이 아닌가...??
현업에서도 이렇게 하는 것이 과연 효율적일까??

라는 고민을 해봤지만,,,

처음 이 프로젝트를 개발하면서 정해놨던 규칙을 일단 끝까지 지키는 것이 맞다고 생각해서 우선 나만의 개발 형식을 유지했다.

3. 구현

3.1 Controller

 /**
     * 댓글 달기 API
     * @param request 사용자 요청
     * @param postCommentRequest 댓글 업로드 요청 데이터
     * @return 댓글 업로드 성공 메시지
     */
    @Operation(summary = "댓글 달기 API", description = "")
    @PostMapping("/comment")
    public ResponseEntity<String> postComment(HttpServletRequest request,
                                              @RequestBody PostCommentRequest postCommentRequest){

        /* 댓글 달기 */
        ourNewsService.postComment(request,postCommentRequest);

        return ResponseEntity.ok("댓글 업로드 성공");
    }

3.2 Service

3.2.1 Interface

 /**
     * 댓글 달기 API
     * @param request 사용자 요청
     * @param postCommentRequest 댓글 업로드 요청 데이터
     */
    void postComment(HttpServletRequest request, PostCommentRequest postCommentRequest);

3.2.2 Implements

/**
     * 댓글 달기 API
     * @param request 사용자 요청
     * @param postCommentRequest 댓글 업로드 요청 데이터
     */
    @Override
    public void postComment(HttpServletRequest request, PostCommentRequest postCommentRequest) {

        /*  our_news_comment DB테이블에 저장할 정보 추출 */
         Long userNumber = jwtService.extractUserNumberFromRequest(request);
         Long ourNewsNumber = postCommentRequest.ourNewsNumber();
         String content = postCommentRequest.content();

         /* 댓글 저장 */
         ourNewsMapper.postComment(userNumber,ourNewsNumber,content);

    }

3.3 Mapper

3.3.1 mapper

/**
     * 댓글 달기
     * @param userNumber
     * @param ourNewsNumber
     * @param content
     */
    void postComment(@Param("userNumber")Long userNumber,
                     @Param("ourNewsNumber") Long ourNewsNumber,
                     @Param("content") String content);

3.3.2 xml

 <!-- 힐링 메시지에 댓글 달기 메서드 -->
    <insert id="postComment" parameterType="map">

        INSERT INTO our_news_comment (ourNewsNumber, userNumber, content, createdDate)
        VALUES (#{ourNewsNumber}, #{userNumber}, #{content}, NOW())

    </insert>

4. 결과

200ok + 성공 메시지

DB에도 성공적으로 저장이 되었다.

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

0개의 댓글