Skip to content

IT-Cotato/10th-BE-Networking-2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 

Repository files navigation

과제 주제: 게시판 API 구현

목표: Spring Boot와 JPA를 이용해 기본적인 게시판 API를 개발합니다. 이 API는 게시글을 생성, 조회, 삭제할 수 있으며, 엑셀 파일에서 데이터를 불러와 여러 게시글을 한번에 저장하는 기능도 포함합니다.

과제 4, 5 목표: 과제 4, 5를 통해 위 과제 코드를 점차 리팩토링 해나갈 예정입니다.


과제 요구사항

1. Post 엔티티 설계 및 구현

  • Post 엔티티를 설계하고 구현하세요.
  • Post 엔티티는 다음과 같은 필드를 포함합니다.
    • id: 게시글 ID (Primary Key, 자동 생성)
    • title: 게시글 제목 (필수)
    • content: 게시글 내용 (필수)
    • name: 작성자 이름 (필수)
    • views: 조회수 (기본값 0)
  • Post 엔티티에는 생성자와 getter, setter를 포함하며, 조회수는 기본값을 설정합니다.

2. 게시글 단일 생성 기능

  • PostController에 게시글을 생성하는 API를 구현하세요.
  • 게시글 생성 시 title, content, name 필드를 전달받아 새로운 게시글을 저장합니다.

3. 게시글 다중 생성 기능 (엑셀 파일로 입력)

  • 엑셀 파일을 업로드하여 여러 개의 게시글을 저장하는 API를 구현하세요.
  • 엑셀 포맷: title, content, name 필드를 포함합니다.
  • 엑셀 파일을 읽고, 각각의 데이터를 Post 엔티티로 변환해 데이터베이스에 저장합니다.
    • 엑셀 파일을 읽는 함수는 구현되어 있습니다.
  • 엑셀의 정보가 누락되는 경우는 없습니다.

요청

  • POST /api/posts/excel
{
  "path": "C:/Users/USER/Desktop/코테이토/10thNetworingN2/backend/src/main/resources/static/excel/포스트_20만개.xlsx"
}

Path 찾는 법

4. 게시글 조회 기능

  • ID를 통해 단일 게시글을 조회하는 API를 구현하세요.
  • 조회 시 조회수(views)가 1씩 증가하도록 설정합니다.
  • 조회된 게시글의 제목, 내용, 작성자, 조회수 등의 정보를 반환하세요.

5. 게시글 목록 조회 기능 (인기순, 페이징 포함)

  • 게시글 목록을 좋아요 수(likes) 순으로 정렬하여 조회하는 API를 구현하세요.
  • Pageable을 사용해 페이지네이션을 구현하고, 페이지별로 10개의 게시글을 반환합니다.
  • 각 게시글의 ID, 제목, 작성자 이름을 포함하여 반환합니다.
  • 추가 기능: 페이지네이션에 필요한 현재 페이지와 전체 페이지 수도 함께 반환합니다.

6. 게시글 삭제 기능

  • ID를 통해 게시글을 삭제하는 API를 구현하세요.
  • 삭제 요청이 성공하면 성공 메시지를 반환합니다.
  • 예외 처리: 존재하지 않는 ID로 삭제 요청할 경우 적절한 에러 메시지를 반환합니다.

Q & A

  • 기존 코드를 수정해도 되나요? → 디렉토리 구조, 코드 등 모두 수정가능합니다.
  • 문제가 이해 안 됩니다. → 이해가 되지 않는 부분은 자신의 생각대로 구현하고 pr에 그 부분을 남겨주세요.

주의

  • application.yml or properties는 각자 설정해야 합니다.

과제 팁

  • swagger를 사용해보세요. 기능은 구현이 되어있어, http://localhost:8080/swagger-ui/index.html 에 접속하시기만 하면 됩니다. 이 안에서 Post Man과 동일한 기능들을 사용할 수 있습니다.
  • 처음부터 잘 하려 하지 않으셨으면 좋겠습니다. 일단 동작하는 코드를 빠르게 작성하시고, 그 다음 v1 -> v2 -> v3 로 업그레이드 해나가셨으면 좋겠습니다.

과제 제출 시 확인사항

  1. 프로젝트 구조 및 코드 작성 스타일: 클래스 구조와 패키지 구성을 명확히 하고, 코드 스타일을 일관되게 유지하세요.

추가 과제 (선택 사항)

  • 공통 응답 이해하기: 공통 응답이 뭔지 이해하고 사용해보세요. 편의를 위해 만들어뒀지만 자신만의 공통 응답을 만들어도 무관합니다.
  • 에러 및 예외 처리: 발생할 수 있는 예외를 적절하게 처리하고, 클라이언트에게 명확한 에러 메시지를 반환하세요.

About

10th-BE-Networking-2를 위한 레포지토리입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages