2021. 1. 27. 14:05ㆍ생활코딩/NodeJS
const http = require('http');
const hostname = '127.0.0.1';
const port = 1337;
http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}).listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
위 코드는 NodeJS에서 제공하는 서버를 만드는 방법이다. 사실 이렇게 간단한 코드로 어플리케이션 서버를 구축한다는 것은 생각보다 굉장한 일이다. 그렇지만 현재에 이르러서는 Node에서 제공하는 http모듈로 앱 서버를 만드는 사람들은 거의 없다고 생각한다. 그 이유는 Express라고 불리는 프레임워크가 등장했기 때문이다.
Express는 Node가 제공하는 서버 구축환경보다 더 쉽고 간편하게 어플리케이션 서버를 구축할 수 있게 도와준다.
1. npm install express
2. 아래와 같이 express를 사용
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
현재상으로는 어느 쪽이 코드의 길이가 더 짧다거나 편리하다고 느끼기에 큰 차이가 없어보인다. 하지만 큰 어플리케이션을 만들어간다면 Express 프레임워크가 반드시 빛을 발휘할 때가 올 것이다.
위의 코드에 대한 설명을 하기보단 더 중요한 개념을 다뤄볼까 합니다.
Express를 사용한다면 반드시 알아야하는 라우팅과 컨트롤러에 대해 아는 것이 중요하기 때문입니다.
이것은 클라이언트의 개념이 아닌 서버 측면에서 다루게 될 내용입니다.
클라이언트가 우리가 방금 만든 Express 웹 서버의 포트번호로 접속하게 되었을 때 서버는 무슨 일을 하는가? 상당히 흥미로운 부분입니다. 우리가 처음 app서버를 만들어도 라우팅을 하지 않았다면 서버는 에러를 발생하게 됩니다.
Cannot Get /
클라이언트가 요청(req)을 했지만 서버가 응답(res)하는 것이 없어서 발생하는 문제점입니다. 따라서 우리는 맨처음에 app을 만들고 서버에서 이러한 처리를 하도록 했습니다.
app.get('/', (req, res) => {
res.send('Hello World!')
})
app에 접근하는 방식은 get과 post 방식이 있는데 현재 클라이언트는 아무것도 하지 않고 서버에게 그저 요청만 하는 과정을 하기 때문에 get방식으로 서버에게 요청을 하게 됩니다. get메서드는 2가지 인자를 가지는데 첫번째 인자가 서버 라우팅을 다루는 인자, 두번째 인자가 어떤 행동을 할지 다루는 컨트롤러를 인자입니다.
실제로 클라이언트가 서버에게 요청을 하면 서버는 클라언트가 어떤 요청을 했느냐에 따라 그에 지정된 라우트로 방향을 제시해주고 그 라우트에서 행동하게 될 컨트롤러의 역할을 다하게 됩니다. 만약 /login라우트를 요청했다면 사용자는 홈으로 가는 것이 아닌 /login라우트로 이동하며 그에 해당하는 컨트롤러를 실행하게 될 것입니다.
'생활코딩 > NodeJS' 카테고리의 다른 글
Express Url을 이용한 정보의 전달(req, res) (0) | 2021.02.03 |
---|---|
Express 웹페이지를 표현하는 방식(정적 / 동적 파일) (0) | 2021.02.03 |
Express로 정적파일을 서비스하는 방법 (0) | 2021.01.29 |
모듈과 NPM (0) | 2021.01.26 |
서버와 클라이언트의 관계 그리고 NodeJS로 서버를 만드는 과정 (0) | 2021.01.25 |