Node.js/Node.js Doc 10

[Node.js - Express] Application-Level과 Route-Level에 차이점은?

이전에 Application-Level에 있는 Router로직을 Routes폴더에 Router에 역할마다 분리하는 작업을 했습니다. 라우터 로직을 왜 분리해야하는 것일까? 동작 레벨에 Application-Level과 Route-Level으로 나누게 되면 성능적으로 차이가 있나? 궁금직이 생겼습니다. 무슨차이일까? 결론적으로 말하면, 모듈화를 위한 디자인적인 설계입니다. Application-Level에 있는 router들에 공통적인 관심사를 분리하여 역할을 덜어주는 겁니다. Application분기와 Router분기로 분리하고 역할을 URL을 분리하여 제어가 가능합니다. 하나에 웹사이트를 만드는데 회원과 상품에 대한 기능을 만든다고 해봅시다. 다음과 같은 요구사항이 있고, API를 설계하였습니다. Us..

Node.js/Node.js Doc 2022.05.12

[Node.js] dotenv로 환경변수 (process.env)관리하기

dotenv란? 개발 중에 필요한 API_KEY, SECRET_KEY, 포트 등 보안에 신경 써야 할 정보들을 소스코드 로직에 그대로 작성하거나, 오픈소스와 같은 github 등 외부에 노출되면 불특정 사람들이 사용을 할 수 있게 됩니다. 따라서 이번 시간에는 .env라는 외부 파일을 만들어 중요한 정보를 환경변수로 저장하여 관리할 수 있는 dotenv 라이브러리에 대해서 공부해 보겠습니다. 자세한 설치 방법은 npm dotenv에서 확인할 수 있습니다. 크로스 플랫폼 환경변수 설정 Node.js는 크로스 플랫폼입니다. Windows, OSX, Linux 플랫폼에서 실행이 가능합니다. 개발을 혼자 하기 보다는 여러 개발자들과 Github/SVN을 통해 형상관리를 하면서 프로젝트를 진행 시, 개발자마다 사..

Node.js/Node.js Doc 2022.05.11

[Node.js] MongoDB 연동하기

이번 시간에는 Node.js에서 MongoDB를 연동하는 법에 대해서 학습해 보고자 합니다. 아직 MongoDB를 사용하기 위한 설정을 하지 않으셨다면 MongoDB 무료로 사용하기(MongoDB Atlas)먼저 보고 와주시면 감사하겠습니다. 이전 시간 마지막에 MongoDB 연결을 위한 코드를 복사하라고 했던 코드로 연결을 해주어야합니다. ⛔️주의 사항! 위에 MongoDB를 연결하기 위한 코드는 외부에 유출이 되면 안됩니다. 따라서 코드를 숨기기 위해서 .env라는 파일을 만들고 .gitignore로 숨겨야합니다. .env파일은 개발 시 필요한 값들을 작성하는 파일입니다. Node.js에서는 .env라는 파일이 존재할 시 환경변수처럼 소스코드로 가져와 사용할 수 있습니다. .env파일을 생성했다면 여..

Node.js/Node.js Doc 2022.05.10

MongoDB 무료로 사용하기(MongoDB Atlas)

MongoDB사이트에 접속하여줍니다. :) 먼저 로그인을 하고, 계정이 없을 경우에는 회원가입을 진행합니다. Build a Database를 클릭하여 MongoDB를 무료로 사용하여 봅시다. 요금제를 선택하는 화면인 Deploy a cloud database가 나오는데 무료로 사용하기 위해서 맨 오른쪽에 있는 Shared - FREE에 Create버튼을 클립합니다. Create a Shared Cluster에서 클라우드 서비스와 클러스터의 리전을 선택해줍니다. 여기서 중요한 것은 저는 배포는 heroku로 할 예정이라 heroku에서 지원하는 리전과 가까운 Oregon을 선택했습니다. 그 이유는, DB는 미국에 있고 만약 서버는 한국에 있다면 거리가 멀어지면, 속도 성능에 대한 이슈가 있을거라고 생각했기..

Node.js/Node.js Doc 2022.05.10

[Node.js - Express] 미들웨어(Middelware)란?

미들웨어란?미들웨어(Middleware)는 클라이언트의 요청(req) 과 서버의 응답(res) 사이에서 실행되는 중간 함수다.이 함수는 next()라는 키워드를 통해 다음 미들웨어로 흐름을 넘길 수 있고, 개발자가 요청-응답 주기 사이에 원하는 로직을 삽입하거나 흐름을 제어할 수 있게 해준다.쉽게 말해, 요청과 응답 사이에 끼어들어 이것저것 할 수 있는 애다.미들웨어(Middleware) 종류Express에서 사용되는 미들웨어는 다음과 같은 종류가 있다.Application-level (어플리케이션 수준)app.use()나 app.get() 등으로 전역적으로 적용하는 미들웨어Router-level (라우터 수준)express.Router()를 이용해 특정 라우터에서만 동작하게 등록하는 미들웨어Error-..

Node.js/Node.js Doc 2022.05.08

라우터 분리하기

Router로 분리에 필요성에 대해서 알아보자 ⛔️ 문제의 app.js - AS-IS 아래 코드는 이전 Basic routing에서 라우팅 작업을 했던 코드입니다. 동작은 잘 되는 코드이지만, Application-Level인 app.js에 역할이 너무 많다는 것입니다. app.js에 역할 Router관련된 로직 Server를 띄워주는 app.listen()로직 현재 아래 코드는 Application-Level에 routing작업이 같이 작성되어 있습니다. 프로젝트 규모가 커질수록 routing작업이 많아집니다. routing작업이 많아진다는 의미는 여러 경로로 갈 수 있는 화면들이 많아진다는 것을 의미합니다. 결론적으로, 서로 연관되어있는 역할에 Router끼리 파일을 만들어서 관심사를 분리해야합니다...

Node.js/Node.js Doc 2022.05.08

[Node.js] bodyparser 미들웨어 사용하기

클라이언트단에서 사용자가 입력한 데이터를 처리하기 위해서는 두 가지 방법이 있다. 1. bodyparser 모듈(4.16이전 버전) 2. express.json 이번에는 body-parser모듈이라는 미들웨어를 사용하는 방법에 대해서 공부해보고자 합니다. 설치 $ npm install body-parser --save cmd에 위에 명령어를 입력하면 설치할 수 있다. body-parser가 없을 때 문제점: undefined Client to Server json value client에서 사용자가 `ilkyu`라는 이름과 `30`나이를 서버로 전달하려고 했지만, 서버에서 req.body로 요청한 값을 받아보면 undefined가 출력된다. { "name": "ilkyu", "age": 30 } 서버에서..

Node.js/Node.js Doc 2022.05.08

[Node.js] Basic routing

routing은 URI또는 path 및 특정한 HTTP 요청 메소드(GET, POST 등)인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것을 말한다. 각 route는 하나 이상의 핸들러 함수를 가질 수 있고, app.METHOD(PATH, HANDLER) app은 express의 인스턴스이다. METHOD는 HTTP 요청 메소드이다. PATH는 서버에서의 경로이다. HANDLER는 라우트가 일치할 때 실행되는 함수이다. METHOD 종류 app.get : 가져오다 app.post : 생성하다 app.put: 전체 수정 app.delete: 제거 app.patch: 부분 수정 (수정작업은 대부분 patch로 활용하게 됨) app.options: 찔러보기 app.head..

Node.js/Node.js Doc 2022.05.08

[Node.js] Express 실행

1. app.js 파일 생성Express 서버를 실행하기 위한 진입점 app.js 파일을 생성한다.Express의 listen 메서드를 사용해 서버를 구동한다. 2. 서버 실행 후 Hello World 띄우기// app.jsconst express = require('express')const app = express()const port = 3000app.get('/', (req, res) => { res.send('Hello World!')})app.listen(port, () => { console.log(`Example app listening on port ${port}`)}) 3. 서버 실행 및 결과 확인터미널에서 다음 명령어로 서버를 실행합니다.$ node app.js 브라우저에서 htt..

Node.js/Node.js Doc 2022.05.08

[Node.js] Express 설치 및 프로젝트 초기 설정

1. Node.js 설치Node.js 공식 웹사이트(https://nodejs.org/)에 접속하여 LTS 버전을 다운로드하고 설치한다. 2. 프로젝트 디렉토리 생성작업에 사용할 디렉토리를 생성하고 이동한다.$ mkdir [project-folder]$ cd [project-folder] 필요 시 하위에 프로젝트 디렉토리를 추가로 생성한다.$ mkdir [project-name]$ cd [project-name]3. npm 초기화package.json 파일을 생성하여 프로젝트 정보를 초기화한다.$ npm init -y4. Express 설치Express 프레임워크를 설치한다.--save 옵션을 추가하여 package.json의 dependencies에 등록되도록 한다.$ npm install expres..

Node.js/Node.js Doc 2022.05.08