항해99 4기 7주차 clone coding - instagram
- 이도연 : like + post + main
- 이동호 : comment + login + signup
- 정하나 : myPage + profile modify
Frontend(React) : https://github.com/eundol0519/cloneCodingProject
- 신항민
- 오은희
- 최주영
- Post /api/users/login
- Post /api/users
- Get /api/users/me
- Get /api/posts
- Post /api/posts/images
- Post /api/posts
- Get /api/posts/:postId
- Delete /api/posts
- Get /api/comments/:postId
- Delete /api/comments/:commentId
- Post /api/comments/:postId
- Post /api/posts/:postId/like
- Get /api/users/posts/:userId
- Get /api/users/:userId/posts
- Post /api/users/:userId
- Put /api/users/:userId
- JWT를 이용하여 로그인과 회원가입 구현
- 이메일은 이메일형식( ex) test@test.com ), 숫자, 영문자 소/대문자로만 구성
- 이름은 2글자 이상, 영문자 소/대문자로만 구성
- 닉네임은 2글자 이상, 숫자, 영문자 소/대문자로만 구성
- 비밀번호가 4글자 이상 12자 이하, 숫자, 영문자 소/대문자로만 구성
- 이메일, 닉네임을 이미 사용중이면 회원 가입 불가능
- 게시글 작성 시 이미지업로드
- 댓글, 좋아요 기능
- 다른 유저의 게시글, 댓글 조회 기능
- 유저 본인의 게시글, 댓글은 삭제가능하며, 다른 유저의 게시글과 댓글은 수정 불가능
- 해당 유저의 프로필 조회
- 해당 유저가 작성한 게시글 조회
- 내 프로필이미지 업로드 및 정보 수정
- API명세를 자주 수정
- 원래는 api작성시 라우터 이름을 활용해야 된다고만 생각했었는데, 중간멘토링 이후 그것이 잘못되었다는 것을 배웠다.
- ex) POST /api/login (로그인 요청)
POST /api/user/image (회원 이미지 업로드)
- DB설계 시 foreignKey 작업 시 관계를 양쪽에 작성했던 문제
- 한 쪽만 작성해서 중복이 없게 함
- ex) db.Post.belongsTo(db.User, { foreignKey: 'userID', targetKey: 'userId', });
- ex) db.User.hasMany(db.Post);
- sequelize findOne으로 가져온 데이터가 Json객체형식으로 가져와야 하는데 DB의 정보를 모두 가져와서 생긴 문제
- 가져온 데이터를 api에서 다시 가공하여 프론트에 전달
- sequelize 설정 관련
- primaryKey를 sequelize에서 기본으로 제공하는 것을 사용하지 않고 primaryKey:true 속성을 이용하면 직접 지정할 수 있다.
- timestamp:true로 지정하였을 때 UTC로 자동설정되어서, timezone속성을 이용하여 우리나라 현재 시간으로 설정 했다. ("timezone":"+09:00")
- 서버 배포시 node_modules파일을 안올리고 서버에서 npm install