GithubHelp home page GithubHelp logo

simple_board's Introduction

GOAL

  • "스파르타 익명 게시판 서버 만들기"
  • Swagger UI를 이용한 API 자동화
  • 비동기 서버 만들어보기

REQUIRE

  • 게시글 작성 기능
    • 제목, 작성자명, 비밀번호, 작성 내용, 작성일을 저장할 수 있습니다.
    • 저장된 게시글의 정보를 반환 받아 확인할 수 있습니다.
      • 반환 받은 게시글의 정보에 비밀번호는 제외 되어있습니다.
  • 선택한 게시글 조회 기능
    • 선택한 게시글의 정보를 조회할 수 있습니다.
      • 반환 받은 게시글의 정보에 비밀번호는 제외 되어있습니다.
  • 게시글 목록 조회 기능
    • 등록된 게시글 전체를 조회할 수 있습니다.
      • 반환 받은 게시글의 정보에 비밀번호는 제외 되어있습니다.
    • 조회된 게시글 목록은 작성일 기준 내림차순으로 정렬 되어있습니다.
  • 선택한 게시글 수정 기능
    • 선택한 게시글의 제목, 작성자명, 작성 내용을 수정할 수 있습니다.
      • 서버에 게시글 수정을 요청할 때 비밀번호를 함께 전달합니다.
      • 선택한 게시글의 비밀번호와 요청할 때 함께 보낸 비밀번호가 일치할 경우에만 수정이 가능합니다.
    • 수정된 게시글의 정보를 반환 받아 확인할 수 있습니다.
      • 반환 받은 게시글의 정보에 비밀번호는 제외 되어있습니다.
  • 선택한 게시글 삭제 기능
    • 선택한 게시글을 삭제할 수 있습니다.
      • 서버에 게시글 삭제를 요청할 때 비밀번호를 함께 전달합니다.
      • 선택한 게시글의 비밀번호와 요청할 때 함께 보낸 비밀번호가 일치할 경우에만 삭제가 가능합니다.

USECASE

test

ERD

erd

API

api 스프링부트를 가동하고 클릭하면 swagger를 통해서 API를 사용할 수 있습니다.

ISSUE

  1. Docker compose 버전 문제

    2.23.0 버전에서 docker compose support에서 실행이 안되는 오류가 발생함. spring team에서 3.1.6 버전에서 이슈를 해결할 것으로 보임.

  2. Pageable 파라미터 매핑 실패 오류

    원인 : WebFlux에서는 Pageble 인터페이스를 지원하지 않음. 3.1.5

    해결법

    1. Pageable 인터페이스 대신 커스텀 Dto 혹은 primitive type 사용하기
    2. Pageable 생성 커스텀 리졸버 만들기
  3. R2DBC Pageable 지원하지 않음

    원인 : R2DBC에서도 역시 Pageable 지원하지 않는다. 오직 Sort만 지원하고 있다. Spring data R2dbc 첫 페이지 공식 문서에서 일반적인 Spring data 프로젝트에 대한 사항을 설명하는 곳에서 Pageable, Page를 지원하는 것으로 착각을 해서 삽질함. R2dbc만의 문서는 여기를 참고

    해결 : Pageable을 그대로 사용하지 않고 offset과 size를 추출해서 사용함.

  4. Swagger RestControllerAdvice exception handle 로직이 전체 API 문서에 각각 반영되는 현상

    해결 : @Hidden, @Operation(hidden = true)를 사용하여 의도하지 않은 문서화 제거

  5. R2dbc 설정 오류

    원인 : R2dbc 숙련도 부족

    해결 : Github R2dbc 사용 코드 탐색 sample

  6. R2dbc 스키마 자동 생성 지원x

    원인 : JPA hibernate와 다르게 정의된 엔티티 기반으로 ddl을 자동으로 실행하지 않음 해결 : schema.sql 작성 후 어플리케이션 가동 후에 ddl 스크립트 실행하도록 설정

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.