1. 게시글 조회 API

이전에 생성했던 게시글을 조회하는 간단한 API이다.
다음 정보를 DTO로 담아서 클라이언트로 전송한다.

1. title
2. author_profile
3. nickname
4. createdDate
5. img_path(nullable)
6. content

2. Trouble Solving

우선 api를 구현함에 있어서 어려움은 하나도 없었다.

그러나 한가지 고민인 것은,
현재 나는 로컬로 구현중인데,
백엔드 서버에서 저장중인 사진을 클라이언트 측으로 어떻게 보내주는 것인가에 대한 공부가 필요할 것 같다.

사진의 경로를 보내주는 것은 참 쉽지만,
클라이언트 측으로는 백엔드서버의 경로를 String 형식으로 보내줘봤자, 무슨 소용이 있을까에 대한 고빈이다.

3. 구현

3.1 Controller

/**
     * 게시글 조회
     * @param ourNewsNumber 조회하고자 하는 게시글 고유번호
     * @return 게시글 조회 DTO
     */
    @Operation(summary = "", description = "")
    @GetMapping("/{ourNewsNumber}")
    public ResponseEntity<GetNewsResponse> getNews(@PathVariable("ourNewsNumber") Long ourNewsNumber){

        /* 게시글 조회 */
        GetNewsResponse getNewsResponse =  ourNewsService.getNews(ourNewsNumber);

        return ResponseEntity.ok(getNewsResponse);
    }

3.2 Service

3.2.1 interface

 /**
     * 게시글 조회 메서드
     * @param ourNewsNumber 조회하고자 하는 게시글의 고유 번호
     * @return 게시글 정보
     */
    GetNewsResponse getNews(Long ourNewsNumber);

3.2.2 implements

 /**
     * 게시글 조회 메서드
     * @param ourNewsNumber 조회하고자 하는 게시글의 고유 번호
     * @return 게시글 정보
     */
    @Override
    public GetNewsResponse getNews(Long ourNewsNumber) {

        /* 게시글 조회 */
        return ourNewsMapper.getNews(ourNewsNumber);
    }

3.3 Mapper

3.3.1 mapper

 /**
     * 게시글 조회
     * @param ourNewsNumber 조회하고자 하는 게시글 고유번호
     * @return 게시글 정보
     */
    GetNewsResponse getNews(Long ourNewsNumber);

3.3.2 xml

 <!-- 게시글 조회 -->
   <select id="getNews" resultType="website.server.Domain.Healing_Space_News.Our_News.DTO.Response.GetNewsResponse">
       SELECT
           ournews.title,
           m.nickname,
           m.profile_image_path,
           ournews.createdDate,
           ournews.img_path,
           ournews.content
       FROM
          our_news ournews
       JOIN
           member m
       ON
           ournews.userNumber = m.userNumber
       WHERE
           ournews.ourNewsNumber =#{ourNewsNumber}
   </select>

4. 결과

게시글을 조회함에 있어서 필요한 모든 정보를 DB에서 불러오는 것에 성공했다.

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

0개의 댓글