From 589ed608c4025168c4dcce3dadddf27a52173aa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=86=8C=EC=98=81?= <74605283+sso0711@users.noreply.github.com> Date: Thu, 28 Sep 2023 18:20:26 +0900 Subject: [PATCH 01/11] Update unit3.md --- Unit3/unit3.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Unit3/unit3.md b/Unit3/unit3.md index 370a370..44a0056 100644 --- a/Unit3/unit3.md +++ b/Unit3/unit3.md @@ -14,14 +14,15 @@ ## ❗️ notion에 키워드 정리 완료 여부 내가 notion에 키워드를 정리를 완료한 경우 체크표시 해주세요~ -- [ ] 키워드 정리 완료 +- [x] 키워드 정리 완료
## ❗️ 3주차 과제 1. AWS EC2 인스턴스 생성 - 수행한 화면 혹은 내용을 작성해 주세요 - +![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/90130995-a641-47d8-a83f-d79028c2ea5a) +public ip를 주소창에 쳤을 때 나타난 화면
2. ssh 사용하여 ubuntu 인스턴스 외부 접속 From ff1b6165c9231685db5bae3f5f2d01b761c413b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=86=8C=EC=98=81?= <74605283+sso0711@users.noreply.github.com> Date: Thu, 5 Oct 2023 11:53:50 +0900 Subject: [PATCH 02/11] Update unit4.md --- Unit4/unit4.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Unit4/unit4.md b/Unit4/unit4.md index cff4f27..34c5137 100644 --- a/Unit4/unit4.md +++ b/Unit4/unit4.md @@ -3,9 +3,9 @@ ## ❗️ 강의 수강 여부 수강한 강의에 체크표시 해주세요~ -- [ ] 데이터베이스 -- [ ] 데이터베이스_MySQL -- [ ] 리눅스에 MySQL 설치하기 +- [x] 데이터베이스 +- [x] 데이터베이스_MySQL +- [x] 리눅스에 MySQL 설치하기
@@ -19,6 +19,8 @@ ## ❗️ 3주차 과제 1. 관계형 데이터베이스 이론적으로 이해하기 - 간단히 여러분이 공부한 내용을 적어주세요. + - +데이터를 테이블(표)로 표현하여 2개 이상의 테이블의 각각의 항목과 속성이 모든 다른 항목의 속성과 연결됨.
@@ -34,6 +36,9 @@ 4. AWS RDS 구축하기 - ERD를 바탕으로 내가 기존에 만들어둔 AWS에서 RDS를 만들어 봅시다. (완성 후 캡쳐본 올리기) +![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/3d132f23-8b10-48cd-9bcc-5fad4f7a1bfe) + +![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/c284f897-408b-4537-9b95-53c9b8202e77)
From 9223e721b3beaa09bad67ee60be3893aa28e3f90 Mon Sep 17 00:00:00 2001 From: dbtjgus6988 <144633320+dbtjgus6988@users.noreply.github.com> Date: Thu, 5 Oct 2023 14:23:22 +0900 Subject: [PATCH 03/11] Update unit4.md --- Unit4/unit4.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Unit4/unit4.md b/Unit4/unit4.md index 6777af6..4597117 100644 --- a/Unit4/unit4.md +++ b/Unit4/unit4.md @@ -110,8 +110,7 @@ ex) MySQL / Oracle / Maria-DB 등 3. ERD 설계하기 - 2번에서 진행한 내용을 바탕으로 직적 ERD 제작 툴을 사용해 작성해봅시다. (완성 후 캡쳐본 올리기) -![무신사 _erd (2)](https://github.com/dbtjgus6988/2023-Server-Study/assets/144633320/218c034e-2284-4d1b-92ea-140ea859ab1c) - +![무신사 _erd (3)](https://github.com/dbtjgus6988/2023-Server-Study/assets/144633320/18ad6fc1-6a9c-474a-89a9-f8f1161b216e)
From 0cb638d2772a8c1e7a1fb9ae564fc9a6cd8b9d02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=86=8C=EC=98=81?= <74605283+sso0711@users.noreply.github.com> Date: Mon, 9 Oct 2023 17:48:04 +0900 Subject: [PATCH 04/11] Update unit4.md --- Unit4/unit4.md | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/Unit4/unit4.md b/Unit4/unit4.md index 34c5137..5572502 100644 --- a/Unit4/unit4.md +++ b/Unit4/unit4.md @@ -19,19 +19,48 @@ ## ❗️ 3주차 과제 1. 관계형 데이터베이스 이론적으로 이해하기 - 간단히 여러분이 공부한 내용을 적어주세요. - - -데이터를 테이블(표)로 표현하여 2개 이상의 테이블의 각각의 항목과 속성이 모든 다른 항목의 속성과 연결됨. +### 관계형 데이터베이스 +데이터를 행과 열(속성,필드)를 갖는 테이블(표,entity,객체)로 표현하여 2개 이상의 테이블 간의 관계를 나타낸 것. +- SQL을 이용하여 관리 및 접근한다. (비관계형DB의 경우는 NoSQL) +- 관계에는 1:1, 1:다, 다:다 가 있다. +- ex)oracle, MySQL, SQL server + +`장점` +- 데이터 무결성, 높은 신뢰성 +- 데이터의 분류, 정렬, 탐색 속도가 빠름 + +`단점` +- 대량의 데이터 입력 처리 -> 데이터베이스 부하 분석이 어려움 +- 갱신이 발생한 테이블의 인덱스 생성 및 스키마 변경 +- 컬럼 확장이 어렵다.(row추가를 통한 수직확장만 지원) +

2. 원하는 서비스(당근마켓, 인스타그램 등) 분석하기 - 원하는 서비스를 하나 타겟팅 후 페이지 4장가량을 선정하고 (캡쳐본 올리기) 데이터베이스에 들어갈 내용을 적어주세요. + +`화해` : 화장품 정보/구매 어플 + +![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/07092db0-9775-4957-a081-64180da682e2) +마이페이지에 이름, 나이, 피부타입, 가입연도, 포인트, 쿠폰, 즐겨찾기 등의 정보가 포함되어 있다. +한 명의 사용자가 여러 화장품을 구매할 수 있고, 여러 후기를 남길 수 있다.(1:다 관계) +![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/3d554d9f-fcbd-47a3-a4c9-75b3e140a83c) +화장품 제품 별 이름, 가격, 브랜드, 할인율, 순위, 어플 내 구매가능여부 +![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/2fe98980-d70a-4752-b360-7311f8cbcf11) +하나의 화장품에는 여러가지 성분이 포함되어 있다. (1:다 관계) +![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/64be437f-8ec0-4dfc-9e69-1fb2f3b51996) +후기에는 장점,단점,이미지를 작성할 수 있다. +하나의 화장품에 여러 후기가 존재한다.(1:다 관계)
3. ERD 설계하기 - 2번에서 진행한 내용을 바탕으로 직적 ERD 제작 툴을 사용해 작성해봅시다. (완성 후 캡쳐본 올리기) +![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/c7687255-703b-408f-a29d-81d405e6e0c9) +* 어려웠던 점 : 어떤 속성을 추가할 때 새로운 테이블로 생성해야할 지, 특정 테이블의 속성으로 추가해야 할 지가 고민되었다. +* 주의할 점 : 데이터베이스의 확장성과 유지보수를 고려하여 작성해야 한다.
4. AWS RDS 구축하기 @@ -39,7 +68,6 @@ ![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/3d132f23-8b10-48cd-9bcc-5fad4f7a1bfe) ![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/c284f897-408b-4537-9b95-53c9b8202e77) -
From 046fa5e89b4ecc5ca6500e58b986c64155413272 Mon Sep 17 00:00:00 2001 From: dangeunii <101170415+dangeunii@users.noreply.github.com> Date: Tue, 31 Oct 2023 17:03:39 +0900 Subject: [PATCH 05/11] Create unit6.md --- Unit6/unit6.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Unit6/unit6.md diff --git a/Unit6/unit6.md b/Unit6/unit6.md new file mode 100644 index 0000000..904dccb --- /dev/null +++ b/Unit6/unit6.md @@ -0,0 +1,42 @@ +### ⭐️ 6주차 과제 제출 ⭐️ + +## ❗️ 강의 수강 여부 +수강한 강의에 체크표시 해주세요~ + +- [ ] HTTP 통신 +- [ ] API +- [ ] 데이터 포맷 - CSV, JSON, XML + +
+ +## ❗️ notion에 키워드 정리 완료 여부 +내가 notion에 키워드를 정리를 완료한 경우 체크표시 해주세요~ + +- [ ] 키워드 정리 완료 + +
+ +## ❗️ 6주차 과제 +1. 개발환경 구축하기 - nodejs 설치 및 사전에 올려둔 템플릿 적용하기 + (완료된 내용 켬쳐본 올리기) + +
+ +2. 자신이 설계한 DB와 연동해서 API설계 (CRUD) + (완료된 내용 켬쳐본 올리기) + +
+ +3. Postman으로 API 테스트 + (완료된 내용 켬쳐본 올리기) + +
+ +4. API Sheet 작성 + (완료된 내용 켬쳐본 올리기) + + +
+ + + From 5691b08af45cbd82d641fb41fe09d50a63c878ec Mon Sep 17 00:00:00 2001 From: dangeunii <101170415+dangeunii@users.noreply.github.com> Date: Tue, 31 Oct 2023 17:08:58 +0900 Subject: [PATCH 06/11] =?UTF-8?q?Revert=20"4=EC=A3=BC=EC=B0=A8=20=EA=B3=BC?= =?UTF-8?q?=EC=A0=9C=20=EC=A0=9C=EC=B6=9C(=EB=B6=80=EB=B6=84=EC=99=84)"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Unit3/unit3.md | 5 ++--- Unit4/unit4.md | 39 +++------------------------------------ 2 files changed, 5 insertions(+), 39 deletions(-) diff --git a/Unit3/unit3.md b/Unit3/unit3.md index 44a0056..370a370 100644 --- a/Unit3/unit3.md +++ b/Unit3/unit3.md @@ -14,15 +14,14 @@ ## ❗️ notion에 키워드 정리 완료 여부 내가 notion에 키워드를 정리를 완료한 경우 체크표시 해주세요~ -- [x] 키워드 정리 완료 +- [ ] 키워드 정리 완료
## ❗️ 3주차 과제 1. AWS EC2 인스턴스 생성 - 수행한 화면 혹은 내용을 작성해 주세요 -![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/90130995-a641-47d8-a83f-d79028c2ea5a) -public ip를 주소창에 쳤을 때 나타난 화면 +
2. ssh 사용하여 ubuntu 인스턴스 외부 접속 diff --git a/Unit4/unit4.md b/Unit4/unit4.md index 5572502..cff4f27 100644 --- a/Unit4/unit4.md +++ b/Unit4/unit4.md @@ -3,9 +3,9 @@ ## ❗️ 강의 수강 여부 수강한 강의에 체크표시 해주세요~ -- [x] 데이터베이스 -- [x] 데이터베이스_MySQL -- [x] 리눅스에 MySQL 설치하기 +- [ ] 데이터베이스 +- [ ] 데이터베이스_MySQL +- [ ] 리눅스에 MySQL 설치하기
@@ -20,54 +20,21 @@ 1. 관계형 데이터베이스 이론적으로 이해하기 - 간단히 여러분이 공부한 내용을 적어주세요. -### 관계형 데이터베이스 -데이터를 행과 열(속성,필드)를 갖는 테이블(표,entity,객체)로 표현하여 2개 이상의 테이블 간의 관계를 나타낸 것. -- SQL을 이용하여 관리 및 접근한다. (비관계형DB의 경우는 NoSQL) -- 관계에는 1:1, 1:다, 다:다 가 있다. -- ex)oracle, MySQL, SQL server - -`장점` -- 데이터 무결성, 높은 신뢰성 -- 데이터의 분류, 정렬, 탐색 속도가 빠름 - -`단점` -- 대량의 데이터 입력 처리 -> 데이터베이스 부하 분석이 어려움 -- 갱신이 발생한 테이블의 인덱스 생성 및 스키마 변경 -- 컬럼 확장이 어렵다.(row추가를 통한 수직확장만 지원) -

2. 원하는 서비스(당근마켓, 인스타그램 등) 분석하기 - 원하는 서비스를 하나 타겟팅 후 페이지 4장가량을 선정하고 (캡쳐본 올리기) 데이터베이스에 들어갈 내용을 적어주세요. - -`화해` : 화장품 정보/구매 어플 - -![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/07092db0-9775-4957-a081-64180da682e2) -마이페이지에 이름, 나이, 피부타입, 가입연도, 포인트, 쿠폰, 즐겨찾기 등의 정보가 포함되어 있다. -한 명의 사용자가 여러 화장품을 구매할 수 있고, 여러 후기를 남길 수 있다.(1:다 관계) -![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/3d554d9f-fcbd-47a3-a4c9-75b3e140a83c) -화장품 제품 별 이름, 가격, 브랜드, 할인율, 순위, 어플 내 구매가능여부 -![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/2fe98980-d70a-4752-b360-7311f8cbcf11) -하나의 화장품에는 여러가지 성분이 포함되어 있다. (1:다 관계) -![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/64be437f-8ec0-4dfc-9e69-1fb2f3b51996) -후기에는 장점,단점,이미지를 작성할 수 있다. -하나의 화장품에 여러 후기가 존재한다.(1:다 관계)
3. ERD 설계하기 - 2번에서 진행한 내용을 바탕으로 직적 ERD 제작 툴을 사용해 작성해봅시다. (완성 후 캡쳐본 올리기) -![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/c7687255-703b-408f-a29d-81d405e6e0c9) -* 어려웠던 점 : 어떤 속성을 추가할 때 새로운 테이블로 생성해야할 지, 특정 테이블의 속성으로 추가해야 할 지가 고민되었다. -* 주의할 점 : 데이터베이스의 확장성과 유지보수를 고려하여 작성해야 한다.
4. AWS RDS 구축하기 - ERD를 바탕으로 내가 기존에 만들어둔 AWS에서 RDS를 만들어 봅시다. (완성 후 캡쳐본 올리기) -![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/3d132f23-8b10-48cd-9bcc-5fad4f7a1bfe) -![image](https://github.com/sso0711/2023-Server-Study/assets/74605283/c284f897-408b-4537-9b95-53c9b8202e77)
From 0f65d855b5ce2a1631ae469870efa50c6b0cee58 Mon Sep 17 00:00:00 2001 From: dbtjgus6988 <144633320+dbtjgus6988@users.noreply.github.com> Date: Wed, 1 Nov 2023 22:47:18 +0900 Subject: [PATCH 07/11] Update unit5.md --- Unit5/unit5.md | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Unit5/unit5.md b/Unit5/unit5.md index 9533b55..9edd6d1 100644 --- a/Unit5/unit5.md +++ b/Unit5/unit5.md @@ -1,46 +1,56 @@ -### ⭐️ 5주차 과제 제출 ⭐️ +스크린샷 2023-11-01 오후 10 35 19### ⭐️ 5주차 과제 제출 ⭐️ ## ❗️ 강의 수강 여부 수강한 강의에 체크표시 해주세요~ -- [ ] 데이터베이스 실습 -- [ ] 데이터베이스 실습 2 -- [ ] SQL +- [x] 데이터베이스 실습 +- [x] 데이터베이스 실습 2 +- [x] SQL
## ❗️ notion에 키워드 정리 완료 여부 내가 notion에 키워드를 정리를 완료한 경우 체크표시 해주세요~ -- [ ] 키워드 정리 완료 +- [x] 키워드 정리 완료
## ❗️ 5주차 과제 1. ERD export해서 구축된 RDS에 반영하기 (완료된 내용 켬쳐본 올리기) - + 스크린샷 2023-11-01 오후 10 40 16 +
2. 데이터그립을 통해서 RDS에 접근하기 (완료된 내용 켬쳐본 올리기) +스크린샷 2023-11-01 오후 10 35 19
3. 접근된 RDS에 쿼리 작성하기 (완료된 내용 켬쳐본 올리기) +스크린샷 2023-11-01 오후 10 34 46
4. RDS에 더미데이터 반영하기 (완료된 내용 켬쳐본 올리기) - + 스크린샷 2023-11-01 오후 10 37 12 +
5. 화면 최소 3개 이상 쿼리 작성하기 (완료된 내용 켬쳐본 올리기) - + 스크린샷 2023-11-01 오후 10 46 19 +스크린샷 2023-11-01 오후 10 27 47 +스크린샷 2023-11-01 오후 10 28 35 +스크린샷 2023-11-01 오후 10 31 45 +스크린샷 2023-11-01 오후 10 34 18 + +
From 437a61e594f1dc44d81de5acdf7142461694ac7d Mon Sep 17 00:00:00 2001 From: dbtjgus6988 <144633320+dbtjgus6988@users.noreply.github.com> Date: Wed, 1 Nov 2023 23:13:02 +0900 Subject: [PATCH 08/11] Update unit5.md --- Unit5/unit5.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Unit5/unit5.md b/Unit5/unit5.md index 9edd6d1..aac9915 100644 --- a/Unit5/unit5.md +++ b/Unit5/unit5.md @@ -1,4 +1,4 @@ -스크린샷 2023-11-01 오후 10 35 19### ⭐️ 5주차 과제 제출 ⭐️ +### ⭐️ 5주차 과제 제출 ⭐️ ## ❗️ 강의 수강 여부 수강한 강의에 체크표시 해주세요~ From 9fe3d2e44327a3f88301f5d735e73942141c50b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B3=A0=EB=8B=A4=EC=9D=80?= <2021057301> Date: Thu, 2 Nov 2023 11:48:42 +0900 Subject: [PATCH 09/11] feat: Add nodejs template --- .DS_Store | Bin 0 -> 6148 bytes server_nodejs_templete/.gitignore | 5 ++ server_nodejs_templete/README.md | 1 + .../config/baseResponseStatus.js | 49 ++++++++++++++++++ server_nodejs_templete/config/database.js | 15 ++++++ server_nodejs_templete/config/express.js | 24 +++++++++ .../config/jwtMiddleware.js | 38 ++++++++++++++ server_nodejs_templete/config/response.js | 18 +++++++ server_nodejs_templete/config/secret.js | 5 ++ server_nodejs_templete/config/winston.js | 48 +++++++++++++++++ server_nodejs_templete/index.js | 6 +++ server_nodejs_templete/package.json | 30 +++++++++++ .../src/app/User/userController.js | 17 ++++++ .../src/app/User/userDao.js | 0 .../src/app/User/userProvider.js | 4 ++ .../src/app/User/userRoute.js | 8 +++ .../src/app/User/userService.js | 15 ++++++ 17 files changed, 283 insertions(+) create mode 100644 .DS_Store create mode 100644 server_nodejs_templete/.gitignore create mode 100644 server_nodejs_templete/README.md create mode 100644 server_nodejs_templete/config/baseResponseStatus.js create mode 100644 server_nodejs_templete/config/database.js create mode 100644 server_nodejs_templete/config/express.js create mode 100644 server_nodejs_templete/config/jwtMiddleware.js create mode 100644 server_nodejs_templete/config/response.js create mode 100644 server_nodejs_templete/config/secret.js create mode 100644 server_nodejs_templete/config/winston.js create mode 100644 server_nodejs_templete/index.js create mode 100644 server_nodejs_templete/package.json create mode 100644 server_nodejs_templete/src/app/User/userController.js create mode 100644 server_nodejs_templete/src/app/User/userDao.js create mode 100644 server_nodejs_templete/src/app/User/userProvider.js create mode 100644 server_nodejs_templete/src/app/User/userRoute.js create mode 100644 server_nodejs_templete/src/app/User/userService.js diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0b93d250db31d25fb8646e498b0a38c2d68f94ab GIT binary patch literal 6148 zcmeHK&1%~~5T3Q2TEYY@Xo8Omy&9^-CTYnu^vL9 z`$%C43n)NAvJ=gYe~|%NyF(~}R&K4!cKuTLf_~}sz0AAwTrbkr*SIdP<6Om<_btB8 zv$FF2@1oP~?LFx`eP`f&3_q(ntfFdF&Z6aes=ZMvk6Sy6-)3pO7(P8$MHOX5y3`3- zl48h*cUh6BdZt!IQtI5$G&ru~E{3DcX6m1g<>bX=JC>W5$NpGOCnwvj>l{3Le)f8C znO_y^#t<#=pVYE%v4vYS{%FqYa9QN4_=I_FpKV`^%m6dM3_L~#>|W*!9^=RJH!}mw zz+Yv6_6Lbd7+7o!>a7C{x;|2SkB|gydP@*Wi-E<)Ahw_glZt3kg?(ZOla79A;{uC~ zL6Z(bkBt4;k%fJs2t7Lbr49!X803-}U { + // read the token from header or url + const token = req.headers['x-access-token'] || req.query.token; + // token does not exist + if(!token) { + return res.send(errResponse(baseResponse.TOKEN_EMPTY)) + } + + // create a promise that decodes the token + const p = new Promise( + (resolve, reject) => { + jwt.verify(token, secret_config.jwtsecret , (err, verifiedToken) => { + if(err) reject(err); + resolve(verifiedToken) + }) + } + ); + + // if it has failed to verify, it will return an error message + const onError = (error) => { + return res.send(errResponse(baseResponse.TOKEN_VERIFICATION_FAILURE)) + }; + // process the promise + p.then((verifiedToken)=>{ + //비밀 번호 바뀌었을 때 검증 부분 추가 할 곳 + req.verifiedToken = verifiedToken; + next(); + }).catch(onError) +}; + +module.exports = jwtMiddleware; \ No newline at end of file diff --git a/server_nodejs_templete/config/response.js b/server_nodejs_templete/config/response.js new file mode 100644 index 0000000..8992a22 --- /dev/null +++ b/server_nodejs_templete/config/response.js @@ -0,0 +1,18 @@ +const response = ({isSuccess, code, message}, result) => { + return { + isSuccess: isSuccess, + code: code, + message: message, + result: result + } + }; + + const errResponse = ({isSuccess, code, message}) => { + return { + isSuccess: isSuccess, + code: code, + message: message + } + }; + + module.exports = { response, errResponse }; \ No newline at end of file diff --git a/server_nodejs_templete/config/secret.js b/server_nodejs_templete/config/secret.js new file mode 100644 index 0000000..bef208e --- /dev/null +++ b/server_nodejs_templete/config/secret.js @@ -0,0 +1,5 @@ +// 해당 KEY 값들을 꼭 바꿔서 사용하기! +// 반드시 .gitignore에 추가하기! +module.exports = { + 'jwtsecret' : '', +}; \ No newline at end of file diff --git a/server_nodejs_templete/config/winston.js b/server_nodejs_templete/config/winston.js new file mode 100644 index 0000000..c01031e --- /dev/null +++ b/server_nodejs_templete/config/winston.js @@ -0,0 +1,48 @@ +const { createLogger, format, transports } = require('winston'); +require('winston-daily-rotate-file'); +const fs = require('fs'); + +const env = process.env.NODE_ENV || 'development'; +const logDir = 'log'; + +// Javascript winston logger 이용하기 +// https://lovemewithoutall.github.io/it/winston-example/ +// Create the log directory if it does not exist +if (!fs.existsSync(logDir)) { + fs.mkdirSync(logDir) +} + +const dailyRotateFileTransport = new transports.DailyRotateFile({ + level: 'debug', + filename: `${logDir}/%DATE%-smart-push.log`, + datePattern: 'YYYY-MM-DD', + zippedArchive: true, + maxSize: '20m', + maxFiles: '14d' +}); + +const logger = createLogger({ + level: env === 'development' ? 'debug' : 'info', + format: format.combine( + format.timestamp({ + format: 'YYYY-MM-DD HH:mm:ss' + }), + format.json() + ), + transports: [ + new transports.Console({ + level: 'info', + format: format.combine( + format.colorize(), + format.printf( + info => `${info.timestamp} ${info.level}: ${info.message}` + ) + ) + }), + dailyRotateFileTransport + ] +}); + +module.exports = { + logger: logger +}; \ No newline at end of file diff --git a/server_nodejs_templete/index.js b/server_nodejs_templete/index.js new file mode 100644 index 0000000..3f8c580 --- /dev/null +++ b/server_nodejs_templete/index.js @@ -0,0 +1,6 @@ +const express = require('./config/express'); +const {logger} = require('./config/winston'); + +const port = 3000; +express().listen(port); +logger.info(`${process.env.NODE_ENV} - API Server Start At Port ${port}`); \ No newline at end of file diff --git a/server_nodejs_templete/package.json b/server_nodejs_templete/package.json new file mode 100644 index 0000000..584eaba --- /dev/null +++ b/server_nodejs_templete/package.json @@ -0,0 +1,30 @@ +{ + "name": "api-server-node", + "version": "1.0.0", + "description": "Node.js API Server", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "dev": "NODE_ENV=development node index.js", + "prod": "NODE_ENV=production node index.js" + }, + "repository": { + "type": "git", + "url": "git@gitlab.com:softsquared/template/api-server-node.git" + }, + "author": "", + "license": "ISC", + "dependencies": { + "compression": "^1.7.4", + "cors": "^2.8.5", + "crypto": "^1.0.1", + "express": "^4.17.1", + "jsonwebtoken": "^8.5.1", + "method-override": "^3.0.0", + "mysql2": "^2.0.0", + "nodemon": "^2.0.7", + "regex-email": "^1.0.2", + "winston": "^3.2.1", + "winston-daily-rotate-file": "^4.2.1" + } +} diff --git a/server_nodejs_templete/src/app/User/userController.js b/server_nodejs_templete/src/app/User/userController.js new file mode 100644 index 0000000..7c92afc --- /dev/null +++ b/server_nodejs_templete/src/app/User/userController.js @@ -0,0 +1,17 @@ +const jwtMiddleware = require("../../../config/jwtMiddleware"); +const userProvider = require("../../app/User/userProvider"); +const userService = require("../../app/User/userService"); +const baseResponse = require("../../../config/baseResponseStatus"); +const {response, errResponse} = require("../../../config/response"); + +const regexEmail = require("regex-email"); +const {emit} = require("nodemon"); + +/** + * API No. 0 + * API Name : 테스트 API + * [GET] /app/test + */ + exports.getTest = async function (req, res) { + return res.send(response(baseResponse.SUCCESS)) + }; \ No newline at end of file diff --git a/server_nodejs_templete/src/app/User/userDao.js b/server_nodejs_templete/src/app/User/userDao.js new file mode 100644 index 0000000..e69de29 diff --git a/server_nodejs_templete/src/app/User/userProvider.js b/server_nodejs_templete/src/app/User/userProvider.js new file mode 100644 index 0000000..d510e3b --- /dev/null +++ b/server_nodejs_templete/src/app/User/userProvider.js @@ -0,0 +1,4 @@ +const { pool } = require("../../../config/database"); +const { logger } = require("../../../config/winston"); + +const userDao = require("./userDao"); diff --git a/server_nodejs_templete/src/app/User/userRoute.js b/server_nodejs_templete/src/app/User/userRoute.js new file mode 100644 index 0000000..38f8d89 --- /dev/null +++ b/server_nodejs_templete/src/app/User/userRoute.js @@ -0,0 +1,8 @@ +module.exports = function(app){ + const user = require('./userController'); + const jwtMiddleware = require('../../../config/jwtMiddleware'); + + // 0. 테스트 API + app.get('/app/test', user.getTest) + +}; diff --git a/server_nodejs_templete/src/app/User/userService.js b/server_nodejs_templete/src/app/User/userService.js new file mode 100644 index 0000000..a2a83fb --- /dev/null +++ b/server_nodejs_templete/src/app/User/userService.js @@ -0,0 +1,15 @@ +const {logger} = require("../../../config/winston"); +const {pool} = require("../../../config/database"); +const secret_config = require("../../../config/secret"); +const userProvider = require("./userProvider"); +const userDao = require("./userDao"); +const baseResponse = require("../../../config/baseResponseStatus"); +const {response} = require("../../../config/response"); +const {errResponse} = require("../../../config/response"); + +const jwt = require("jsonwebtoken"); +const crypto = require("crypto"); +const {connect} = require("http2"); + +// Service: Create, Update, Delete 비즈니스 로직 처리 + From bdfaac94d76aa3ab35e7a04fa88cb2cf43be6845 Mon Sep 17 00:00:00 2001 From: dbtjgus6988 <144633320+dbtjgus6988@users.noreply.github.com> Date: Thu, 2 Nov 2023 17:00:50 +0900 Subject: [PATCH 10/11] Update unit5.md --- Unit5/unit5.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Unit5/unit5.md b/Unit5/unit5.md index aac9915..6965f22 100644 --- a/Unit5/unit5.md +++ b/Unit5/unit5.md @@ -21,6 +21,8 @@ (완료된 내용 켬쳐본 올리기) 스크린샷 2023-11-01 오후 10 40 16 + https://velog.io/@xxoznge/RDS-ERD-export-%EC%A0%81%EC%9A%A9-%EC%BF%BC%EB%A6%AC-%EC%9E%91%EC%84%B1 +
2. 데이터그립을 통해서 RDS에 접근하기 @@ -33,12 +35,16 @@ (완료된 내용 켬쳐본 올리기) 스크린샷 2023-11-01 오후 10 34 46 +https://velog.io/@msung99/Server-5%EC%A3%BC%EC%B0%A8-%EC%8B%A4%EC%8A%B5 +
4. RDS에 더미데이터 반영하기 (완료된 내용 켬쳐본 올리기) 스크린샷 2023-11-01 오후 10 37 12 + https://velog.io/@leesomyoung/MySQL-%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%80%EB%A1%9C-%EB%8D%94%EB%AF%B8%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%BD%EC%9E%85%ED%95%98%EA%B8%B0 +
From 918045e987b76e01858a9efd6390f2e7f15d129d Mon Sep 17 00:00:00 2001 From: Seohyeon Yoo <144633320+dbtjgus6988@users.noreply.github.com> Date: Fri, 26 Apr 2024 15:37:37 +0900 Subject: [PATCH 11/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 576218b..7353a8b 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ 고다은 # General -A, B, C, ... +유서현, ... ```