Skip to content

PBL-magazine/backend-chicken

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

블로그 BE 만들기

- Express, JWT, Sequelize, mysql, joi, docker, postman, cookie-session 

현재 작업중

- 예외처리
    - http method에 맞는 http Status code 변환하기
    - 에러메세지 처리하기
- 권한기능
    - [x] 글쓰기 권한 (로그인 한 사람만 작성가능)
    - [x] 이미 로그인 한 사람의 다시 페이지 또는 회원가입한 페이지에 접속할 경우 에러메세지
    - [x] 글쓰기 권한이 가지고 있는 사람은 글은 조회는 가능하나 수정, 삭제는 불가능
    - [ ] 관리자 권한을 가지고 있는 사람은 아무거나 글 수정, 삭제 가능
    - [x] 로그인 하지 않은 사람
-  로그인 처리
    - [ ] 닉네임은 `최소 3자 이상, 알파벳 대소문자(a~z, A~Z), 숫자(0~9)`로 구성하기
    - [ ] 비밀번호는 `최소 4자 이상이며, 닉네임과 같은 값이 포함된 경우 회원가입에 실패`로 만들기
    - [ ] 비밀번호 확인은 비밀번호와 정확하게 일치하기
- 이미지 업로드 삭제 
- CORS 처리

작업한 내용

- [x] JWT인증 방식 연습 완료
- [x] DB Models 작업 완료
- [x] 첫째주 express를 이용한 router 이용 방법 완료
- [x] cookie-seesion 설정 및 사용자 상태 
- [x] cookie-session middle ware를 기존 라우터에 연결
- [x] fetchList 부분 원하는 데이터만 가져오기가 안됨 (attributes, include)
- [x] 좋아요 기능 추가
- [x] 로그인 Authentication middleware 처리
- [x] refactoring 을 해서 좀서 알아보기 쉽게 가독성을 높혀야함
- [x] MVC 패턴으로 나름대로 짜봤는데 맞는지 모르겠음
- [x] Primary key, Forigner key 설정 방법
- [x] sequelize 구조에 대한 이해 부족

요구조건

✅ API 서버 요구 사항
  1. 회원 가입 페이지

    • 닉네임은 최소 3자 이상, 알파벳 대소문자(a~z, A~Z), 숫자(0~9)로 구성하기
    • 비밀번호는 최소 4자 이상이며, 닉네임과 같은 값이 포함된 경우 회원가입에 실패로 만들기
    • 비밀번호 확인은 비밀번호와 정확하게 일치하기
  2. 로그인 페이지

    • 로그인 버튼을 누른 경우 닉네임과 비밀번호가 데이터베이스에 등록됐는지 확인한 뒤, 하나라도 맞지 않는 정보가 있다면 "닉네임 또는 패스워드를 확인해주세요"라는 메세지를 프론트엔드에서 띄워줄 수 있도록 예외처리 하기
  3. 로그인 검사

    • 로그인 하지 않은 사용자도, 게시글 목록 조회는 가능하도록 하기
    • 로그인하지 않은 사용자가 좋아요 버튼을 눌렀을 경우, "로그인이 필요합니다." 라는 메세지를 프론트엔드에서 띄워줄 수 있도록 예외처리 하기
    • 로그인 한 사용자가 로그인 페이지 또는 회원가입 페이지에 접속한 경우 "이미 로그인이 되어있습니다."라는 메세지로 예외처리하기
    • 로그인을 한 사용자만 글쓰기 권한이 존재함
  4. 예외 처리상황과 Http Method에 맞는 Http Status Code 반환하기

    • 본인이 선택한 Status Code의 반환 이유를 설명하기
    • 회원 가입 페이지, 로그인 페이지, 로그인 검사 기능
  5. CORS 해결하기

    • CORS란 무엇이며, 어떤 상황에서 일어나는지 / 어떻게 해결하는지 알아보고, 프로젝트에 적용하기
  6. 관리자 권한

    • 권한을 추가하여 관리자 계정 로그인 시 모든 게시글, 댓글을 삭제할 수 있도록 구현하기

새롭게 알게된 부분

- require 부분도 정리할 수 있다. ( 원영님 소스코드 참조)
- Joi 사용법
- express.json() 을 미들웨어로 넣어야지 postman에서 application/json타입으로 받을때 정상적으로 받아진다
- join이 완료되어 있는 상태에서 user -< post 테이블 관계에서 user에 DB가 없으면 에러 발생 서버가 죽는다. 예외처리를 해야함 
- sequelize 에서 define 메소드의 validate부분에 대해서 알게되었다. 간단하게 예외처리하기에는 나쁘지 않았지만, Joi가  모듈로나 예외처리 부분이 더 깔끔하다는 생각이 든다.

폴더 구조

```
|- practice <정삭제예정> 
|- docs
|- src
|  |- models
|  |- controllers
|  |- router
|  |- service
|- utils
|- app.js

```

ERD 설계

image

HTTP 상태 코드

- [링크](/docs/HTTPCODE.MD)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published