-. 백엔드 API용으로 사용(POST/PATCH/PUT/DELETE Method):
JSONResponse 혹은 response_model을 이용하여 Pydantic model을 반환함
-. 프론트엔드 API용으로 사용(GET Method)
templates.TemplateResponse를 이용하여, json data를 담아서 렌더링
-. 백엔드로 요청을 보내는 경우 바닐라 자바스크립트를 이용함
-. 백엔드에서 넘어온 json data를 받아서 Jinja syntax와 javascript로 렌더링 함
ASYNC_ENGINE = create_async_engine(DATABASE_URL,
echo=CONFIG.DEBUG,
future=True,
pool_size=10, max_overflow=0, pool_recycle=300, # 5분마다 연결 재활용
# encoding="utf-8"
)
# 세션 로컬 클래스 생성
AsyncSessionLocal = async_sessionmaker(
ASYNC_ENGINE,
class_=AsyncSession, # add
expire_on_commit=False,
autocommit=False,
autoflush=False,
# poolclass=NullPool, # SQLite에서는 NullPool 권장
)
redis_pool = ConnectionPool(
host=host,
port=port,
db=db,
password=password,
decode_responses=True, # 문자열 응답을 자동으로 디코딩
max_connections=10)
redis_client = Redis(connection_pool=redis_pool)
-. user 가입/업데이트/탈퇴
-. article(게시글) 생성/수정/삭제
-. article(게시글)의 목록의 페이지네이션(오프셋 모드, 커서모드)
-. article(게시글), 코멘트(댓글)의 검색기능
-. article(게시글), 코멘트(댓글)의 "좋아요(vote)"기능
-. 로또: 과거의 당첨번호 데이타 업데이트(1주일마다 자동)
-. 로또 번호 최상위 당첨번호 갯수 선택 후 예측 당첨번호 맞추기
-. user 가입/이메일변경/비밀번호 분실시 재설정 과정에 본인인증을 이메일로 인증코드 발송 후 확인하는 과정을 거침
-. user 로그인시 액세스 토큰으로 Authorization을 획득하고,
액세스 토큰 만료시 리프레시 토큰으로 액세스토큰을 재발급하는 과정을 넣음
-. article(게시글)의 내용을 Quill.js 에디터를 사용함(Quill.js 에디터의 커스터마이징)
-. article(게시글)에 저장되었던 이미지나 동영상중에서 사용하지 않는 것들을 정리하는 로직 추가 함
-. article(게시글)의 목록 페이지네이션(오프셋 모드와 커서모드)를 검색기능과 연결하여 구현하는 것이 난이도가 매우 높았슴
-. article(게시글)의 댓글과 대댓글을 하나의 모델(ArticleComment)을 사용하여 구현함:
댓글과 대댓글 모델을 각각 두는 방법도 고려할 필요 있슴
-. article(게시글)의 좋아요(vote)기능을 구현할 때,
"Association Table(Join Table)을 이용함"
many to many ORM을 Model Class table로 구현하지 않음(이것의 사용을 고려할 필요가 있슴)
-. 당첨 로또 번호의 최상위 번호 10개를 업데이트하는 과정을 자동으로 1주일마다 실행할 수 있게 Scheduler를 적용함