-
제로부터 시작하는 Node.js - 9. Express 모듈 - 1내가 보기 위해 쓰는 것/Node.js 2019. 11. 6. 16:21
Node.js 웹 서버를 개발할 때 가장 많이 사용되는 Express 모듈에 대해서 알아보겠습니다.
http모듈처럼 내용이 꽤 방대함으로 나누어서 진행할 생각입니다.
이 글에서는 미들웨어 개념까진 가지 않고 http모듈과의 차이, 추가 기능 등을 중심으로 기술하였습니다.
1. 기본 서버
우선 Express 모듈을 사용해 서버를 작성해봅시다.
index.js 입니다.
const express = require('express') const app = express() app.use(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/html' }) res.end('<h1>Hi</h1>') }).listen(3001, function (err) { console.log('server is running at http://127.0.0.1:3001') })
http모듈을 이용해 만들 때와 별로 다를게 없습니다. 그러나 Express모듈은 http모듈 보다 더 많은 기능을 내장하고 있습니다.
2. 기본 메서드
request 이벤트 리스너의 매개변수에 request, response 객체가 들어가죠?
express모듈은 이 두 객체에 더 다양한 기능이 추가되어있습니다.
2-1. response 객체
express 모듈의 response 객체에는 아래 표의 메서드들이 추가되어있습니다.
메서드 설명 response.send(value) 매개변수의 자료형에 따라 적절한 형태로 보여줍니다. response.json(value) JSON형태로 리턴합니다. response.jsonp(value) JSONP의 형태로 리턴합니다. reponse.redirect(status, path) 웸 페이지의 경로를 이동합니다. send 메서드부터 살펴보겠습니다. 자료형에 따라 적절한 형태로 보여준다는게 무슨 뜻일까요?
우선 정리해보자면 매개변수에 따라서 문자열은 HTML, 배열과 객체는 JSON형태로 보여줍니다.
간단한 예제로 살펴보겠습니다.
const express = require('express') const app = express() app.use(function (req, res) { let value = [] for(let i = 0; i < 5; i++) { value.push({ num: i, desc: 'its : ' + i }) } res.send(value) }).listen(3001, function (err) { console.log('server is running at http://127.0.0.1:3001') })
배열 데이터를 매개변수로 주니 JSON 형태로 결과를 보여주고있습니다.
추가적으로 status라는 메서드를 상용하여 상태코드를 전달하는 법도 알아보겠습니다.
const express = require('express') const app = express() app.use(function (req, res) { res.status(404).send('<h1>404: Page not found</h1>') }).listen(3001, function (err) { console.log('server is running at http://127.0.0.1:3001') })
개발자 도구로 요청을 확인해봅시다.
status code가 404로 되어있습니다.
2-2. request 객체
request 객체도 http모듈과 비교해서 새로운 메서드,속성들 이 있습니다. 살펴봅시다.
메서드/속성 설명 params 라우팅 매개변수 추출 query 요청 매개변수 추출 headers 요청 헤더 추출 header() 요청 헤더의 속성 지정혹은 추출 accepts(type) 요청 헤더의 Accept 속성 확인 is(type) 요청 헤더의 Content-Type 속성 확인 header(), headers 멤버를 예제로 들어보겠습니다
유저가 http요청을 하면 User-Agent 속성이 반드시 붙음으로 User-Agent 속성을 추출해봅시다.
const express = require('express') const app = express() app.use(function (req, res) { const agent = req.header('User-Agent') console.log(req.headers) console.log(agent) }).listen(3001, function (err) { console.log('server is running at http://127.0.0.1:3001') })
브라우저로 서버에 접속해보고 터미널을 확인해봅시다.
헤더의 정보를 가져오면 접속한 클라이언트의 브라우저 정보를 가지고 별도의 처리를 할 수 있겠네요.
query속성으로 매개변수도 추출해봅시다.
const express = require('express') const app = express() app.use(function (req, res) { const name = req.query.name const age = req.query.age res.send('<h1>' + name + ' - ' + age + '</h1>') }).listen(3001, function (err) { console.log('server is running at http://127.0.0.1:3001') })
이렇게 입력 한 후 http://127.0.0.1:3001?name=이름&age=나이
이렇게 주소창에 입력하여 접속하여봅시다.
이 글은 여기까지입니다. 다음 글은 미들웨어입니다.
'내가 보기 위해 쓰는 것 > Node.js' 카테고리의 다른 글
제로부터 시작하는 Node.js - 11. Express 모듈 - 3 (미들웨어 2) (0) 2019.11.16 제로부터 시작하는 Node.js - 10. Express 모듈 - 2 (미들웨어 1) (0) 2019.11.07 제로부터 시작하는 Node.js - 8. 패키지 매니저 npm, 외부모듈 (0) 2019.11.06 제로부터 시작하는 Node.js - 7. http 모듈 2편 (Cookie, Request, Page) (0) 2019.11.05 제로부터 시작하는 Node.js - 6. http 모듈 1편 (Http, Server, Request, Response) (0) 2019.11.04