Skip to content

codehousepig/12-punch-assignment1-AIMMO

 
 

Repository files navigation

12-punch-assignment2-AIMMO

[위코드 x 원티드] 백엔드 프리온보딩 1주차 과제(1) _ AIMMO

12팀 (원투펀치 팀)
팀원: 김민재, 정천우, 최유진


< 게시판 Restful API >

서버 배포 링크 : http://13.125.0.161:3001/


💻 Tech Stack

Programming Language : JavaScript
Runtime : NodeJS
Framework : Express
Database : MongoDB
Deploy : AWS EC2
ETC : Mongoose, JWT, Bcrypt


📋 API Docs


💾 DB Scheme


🔎 Description

서버(로컬) 실행 방법
Github Repository를 clone 한 후,
npm install 명령어를 통해 필요한 npm 모듈을 설치합니다.
이후, npm run start 명령어를 통해 서버를 실행시킬 수 있습니다.
*JWT Secret key는 임시 키로 코드상에 구현해 놓았으니 별도로 .env 파일을 만들지 않아도 됩니다.

서버 url
[1] 배포: http://13.125.0.161:3001
[2] 로컬: http://localhost:3000

로그인 이전 할 수 있는 기능
회원가입(POST), 게시글 리스트 조회(GET), 게시글 단건 조회(GET),
댓글 조회(GET), 대댓글 조회(GET)

  • 게시글 리스트 조회, 댓글 조회, 대댓글 조회는 Pagination을 구현했습니다.
  • 게시글 단건 조회의 경우, 로그인 상태인 유저가 조회를 할 경우에만 count가 누적되며, 중복되어서 count가 누적되지는 않습니다.

로그인 기능
유저 로그인(POST)

로그인 이후 할 수 있는 기능
게시글 작성(POST), 게시글 수정(PATCH), 게시글 삭제(DELETE),
댓글 작성(POST), 대댓글 작성(POST)

API에 대한 자세한 내용은 Postman Document 을 통해 더 자세하게 확인 할 수 있습니다.


구현 방법
NodeJS 런타임에서 Express 미들웨어를 활용해서 CRUD 게시판 API를 구현했습니다. 유저 로그인 방식은 JWT를 활용한 토큰 인증 방식으로 구현했으며, Bcrypt 해싱 모듈을 활용해 유저로부터 전달받은 패스워드를 암호화 하여 데이터베이스에 저장했습니다.

API 중 유저 권한이 필요한 요청들은

  1. accessToken이 있는지 먼저 판별 후 있다면 바로 응답을,
  2. accessToken이 만료되었을 경우, refreshToken을 판별 후 있다면 accessToken 재발급과 함께 응답을,
  3. 두 토큰 모두 만료되었을 경우, 다시 로그인해달라는 메세지와 401 응답코드를 응답하도록 구현했습니다.

DB는 mongoose를 이용하여 서버와 연결하였고, AWS의 EC2 서비스를 이용해서 배포를 완료했습니다.


🔥 회고록

김민재 : https://minjman2659.notion.site/1-_AIMMO-123cd4f913cc4d84b7b037f9db3e54de

정천우 : https://blog.naver.com/codehouse9/222556847652

최유진 : https://become-clear.tistory.com/85

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 98.3%
  • Pug 1.1%
  • Other 0.6%