본문 바로가기
Spring Boot Project/Plming

[Plming] 게시판 API 서버에 올리기

by slchoi 2022. 3. 31.
728x90
SMALL

지금까지 진행된 게시판 API를 서버에 올려 프론트엔드와 연동해 테스트할 수 있도록 할 것이다.

서버에 배포 파일을 올리기 전에 기존에 작성한 API 문서를 수정하다 구현하지 않은 기능이 있어 먼저 기능을 구현한 뒤 배포 파일 빌드를 진행할 것이다.

마이페이지에 들어갔을 때, 사용자가 작성한 게시글을 확인할 수 있도록 사용자가 작성한 게시글 리스트만 조회할 수 있는 기능을 추가할 것이다.

1. 사용자 ID 기준 게시글 리스트 조회 기능 추가

먼저 BoardRepository에 findAllByUserId 메서드를 추가한다.

package plming.board.entity;

import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface BoardRepository extends JpaRepository<Board, Long> {

    /**
     * 게시글 리스트 조회 - (삭제 여부 기준)
     */
    List<Board> findAllByDeleteYn(final char deleteYn, final Sort sort);

    /**
     * 추가
     * 게시글 리스트 조회 - (사용자 ID 기준)
     */
    List<Board> findAllByUserId(final Long userId, final Sort sort);

}

다음으로 BoardService에 아래 메서드를 추가하고, findAll( ) 메서드는 이제 사용하지 않으므로 삭제한다.

/**
 * 게시글 리스트 조회 - (사용자 ID 기준)
 */
public List<BoardResponseDto> findAllByUserId(final Long userId) {
    Sort sort = Sort.by(DESC, "id", "createDate");
    List<Board> list = boardRepository.findAllByUserId(userId, sort);
    return list.stream().map(BoardResponseDto::new).collect(Collectors.toList());
}

마지막으로 BoardApiController에 아래 메서드를 추가해주면 된다.

    /**
     * 게시글 리스트 조회 - 사용자 ID 기준
     */
    @GetMapping("/user")
    public List<BoardResponseDto> findAllByUserId(@RequestParam final Long userId) {

        return boardService.findAllByUserId(userId);
    }

전체 로직을 살펴보면 GET "/user?userId={userId}"가 호출되면 BoardApiController에서 요청 파라미터 값으로 들어온 userId를 boardService의 findAllByUserId의 매개변수 값으로 넣어준다. boardService에서는 DB에 저장되어 있는 게시글 중에서 게시글의 userId가 매개변수로 들어온 userId와 일치하는 게시글을 리스트화해 응답 Dto로 반환하게 된다.

Postman을 사용해서 테스트해볼 것이다. 사용자 ID가 3인 게시글만 요청해보자.

사용자 ID 기준 게시글 리스트 조회 테스트

userId가 3인 게시글들만 리스트화 되어 응답으로 잘 반환해주는 것을 확인할 수 있다.

2. 배포 파일 빌드

IntelliJ에서 오른쪽 창의 Gradle을 클릭하면 사진과 같은 구조가 나온다.

Gradle 폴더 구조

이 중에서 "board.Tasks.build" 파일의 build를 더블 클릭하면 빌드가 시작된다.

build 진행 중

빌드가 완료되면 왼쪽 프로젝트 구조에서 build 폴더 안의 libs 폴더에 들어가면 ~~~. jar 파일이 있는데 이 파일이 빌드된 파일이다. 이제 EC2에 올려서 실행시키면 서버가 돌아간다.

빌드된 배포 파일 확인

 

3. AWS EC2에 jar 파일 배포하기

FileZila를 통해 EC2에 파일을 배포할 것이다. FileZila는 여기서 다운로드할 수 있으며 Server가 아닌 Client를 다운로드하여야 한다.

Filezila 다운이 완료되면 실행시켜 "파일" 아래쪽 아이콘을 클릭해 사이트 관리자를 실행한다. 사이트 관리자에서 New site를 클릭해 새 사이트를 생성하고 정보를 입력한다.

New Site 생성

  • 프로토콜은 SFTP로 설정하고, 호스트에는 EC2의 IP 주소를 입력한다.
  • 로그온 유형은 키가 있을 경우 키 파일을 선택하면 되고, 없을 경우 다른 선택지를 선택하면 된다.
  • 서버는 다른 팀원이 만든 후 공유해준 것이어서 우선 비밀번호 찾기로 연결을 진행했다.

연결에 성공하면 jar 파일이 있는 디렉터리에 들어간 다음 jar 파일을 더블 클릭하면 EC2로 전송된다.

jar 파일 전송

 

파일 전송이 완료되면 git bash을 열어 ssh를 통해 연결한다. git bash를 열고 연결해주면 (연결 주소는 FileZila 아이콘 옆 부분에 보이는 주소를 입력하면 된다.) 잘 연결되는 것을 확인할 수 있다.

연결 주소
연결 성공

FileZila를 통해 보내준 jar 파일을 실행시키면 DB 연결하는 부분에서 오류가 난다. 

실행 화면
오류 발생!

DB 연결 주소를 서버 DB 주소가 아닌 local DB 주소여서 오류가 발생했다. 서버 개설을 담당한 팀원이 DB를 생성한 뒤 연락 주겠다고 하셔서 연락 기다리면서 태그 관련 작업을 시작해야겠다.

728x90
LIST

댓글