개발환경에 필요한 데이터베이스는 Docker 컨테이너를 이용해서 구성되있습니다.
운영체제에 맞는 Docker를 설치해주세요.
https://www.docker.com/products/docker-desktop/
Docker 컨테이너를 가동시키는 데 필요한 docker-compose를 설치해주세요.
https://docs.docker.com/compose/install/
리눅스기반의 운영체제에서 docker는 기본적으로 root권한이 필요합니다.
root가 아닌 사용자가 sudo없이 사용하려면 해당 사용자를 docker그룹에 추가합니다.
sudo usermod -aG docker $USER # 현재 접속중인 사용자에게 권한주기
sudo usermod -aG docker your-user # your-user 사용자에게 권한주기
프로젝트의 런타임인 nodejs와 npm을 설치해주세요.
https://docs.npmjs.com/downloading-and-installing-node-js-and-npm
프로젝트에 사용되는 환경변수는 .env와 .env.dev에 정의되있습니다.
- DB_PORT : Docker 컨테이너와 통신하기 위한 포트번호입니다.
- PORT : 애플리케이션이 수신할 포트번호입니다.
각자의 실행환경에 맞게 해당 환경변수를 확인해주세요.
프로젝트의 루트 디렉토리에서 아래 스크립트를 실행해주세요.
npm run init
해당 스크립트는 프로젝트의 의존성들과 Docker 이미지를 설치한 뒤 Docker 컨테이너를 가동시키는 동작을 합니다.
프로젝트의 루트 디렉토리에서 아래 스크립트를 실행해주세요.
npm run dev
프로젝트가 실행 된 후 테스트 조회를 위해 임의의 메모 더미를 삽입하고 싶으면 아래의 url에 요청을 보내주세요.
GET /test
- 임의의 아이디로부터 생성된 메모가 추가됩니다.
- 별도의 응답은 없습니다.
- 쿼리스트링으로 accountCount와 memoCount를 전달할 경우 해당하는 숫자만큼 계정과 메모가 생성됩니다.
- accountCount와 memoCount가 전달되지 않을 경우 기본값은 5입니다
- OS : Ubuntu 20.04.2 LTS 64-bit
- node.js : 14.18.2
- npm : 7.20.2
- docker : 20.10.12
- docker-compose : 1.29.2
- postgresql : 14.2
- 최근에 수정된 메모부터 5개 단위로 조회합니다.
GET /api/memo
Name | Type | Description | Required | |
---|---|---|---|---|
QueryString | page | number | 조회하고자 하는 페이지 | X |
GET /api/memo/:memoId
Name | Type | Description | Required | |
---|---|---|---|---|
URL | memoId | number | 조회할 메모의 ID | O |
- signin 이후에 가능합니다.
POST /api/memo
Name | Type | Description | Required | |
---|---|---|---|---|
body(JSON) | body | string | 메모의 내용 | O |
- signin 이후에 가능합니다.
- signin 된 계정에 의해 작성된 메모만 수정됩니다.
PUT /api/memo/:memoId
Name | Type | Description | Required | |
---|---|---|---|---|
URL | memoId | number | 수정할 메모의 ID | O |
body(JSON) | body | string | 메모의 내용 | O |
- signin 이후에 가능합니다.
- signin 된 계정에 의해 작성된 메모만 삭제됩니다.
DELETE /api/memo/:memoId
Name | Type | Description | Required | |
---|---|---|---|---|
URL | memoId | number | 삭제할 메모의 ID | O |
POST /api/user/signup
Name | Type | Description | Required | |
---|---|---|---|---|
body(JSON) | id | string | 영문소문자로 시작하는 4~20자의 문자열 / 영소문자, 숫자, -(hyphen), _(underscore) 만 허용함 | O |
pw | string | 2~14자의 문자열 원본 / 대소문자를 구분하며 영문자와 숫자만 허용함 | O |
POST /api/user/signin
Name | Type | Description | Required | |
---|---|---|---|---|
body(JSON) | id | string | 영문소문자로 시작하는 4~20자의 문자열 / 영소문자, 숫자, -(hyphen), _(underscore) 만 허용함 | O |
pw | string | 2~14자의 문자열 원본 / 대소문자를 구분하며 영문자와 숫자만 허용함 | O |
- signin 이후에 가능합니다.
POST /api/memo/:memoId/comment
Name | Type | Description | Required | |
---|---|---|---|---|
URL | memoId | number | 댓글을 작성할 메모의 id | O |
body(JSON) | body | string | 댓글의 내용 | O |
- signin 이후에 가능합니다.
- signin 된 계정에 의해 작성된 댓글만 수정됩니다.
PUT /api/memo/:memoId/comment/:commentId
Name | Type | Description | Required | |
---|---|---|---|---|
URL | memoId | number | 댓글이 작성된 메모의 id | O |
URL | commentId | number | 수정할 댓글의 id | O |
body(JSON) | body | string | 댓글의 내용 | O |
- signin 이후에 가능합니다제
- signin 된 계정에 의해 작성된 메모만 삭제됩니다.
DELETE /api/memo/:memoId/comment/:commentId
Name | Type | Description | Required | |
---|---|---|---|---|
URL | memoId | number | 댓글이 작성된 메모의 id | O |
URL | commentId | number | 수정할 댓글의 id | O |