티스토리 뷰
Express에서 역시 사용자가 원하는 요청 객체와 응답 객체를 구현할 수 있다. Express의 콜백 함수는 라우팅 기능을 통해 구현되는데, 이번 시간에는 Express 라우팅 기능을 중심으로 하는 콜백 함수에 대해 알아보자.
1. 요청 객체
Express의 라우팅 기능을 활용해서 url parsing 없이 객체를 선언할 수 있다는 것을 알았다. 이번에는 Express get 함수에 들어가는 콜백 함수에 대해 알아보자. 콜백 함수에는 총 3가지의 인자가 들어간다
- 요청 객체
- 응답 객체
- NEXT 객체
이 중 NEXT 객체는 선택 사항이다.
요청 객체에는 아래 3가지 변수가 담긴다
- params
- query
- body
1 2 3 4 5 6 | app.get('/users/:id', function(request, response) { let params = request.params; let querys = request.query; console.log(params, querys); res.send('hello world'); }); | cs |
위와 같은 요청 객체를 선언했다고 하자. GET 요청을 다음과 같이 보낸다.
http://localhost:3000/user/1
그 다음 결과를 살펴보면 다음과 같이 나타난다.
{ id: 1 } { }
GET 요청과 마찬가지로 POST 요청 역시 같은 방식으로 구현 가능하다. POST 요청의 경우 body 변수가 담긴다.
1 2 3 4 5 6 7 8 9 10 11 12 | app.get('/users/:id', function(request, response) { let params = request.params; let querys = request.query; console.log(params, querys); res.send('hello world'); }); app.post('/', function(request, response) { let body = request.body; console.log(body); res.send('/ POST 요청); }); | cs |
이와 같이 요청 객체를 작성하고 POST 요청을 실행하면 값이 제대로 나오자 않을 것이다. Express에서 Body를 사용하기 위해서는 body-parser라는 미들웨어를 사용해야한다. body-parser 미들웨어는 아래의 코드로 등록 할 수 있다.
1 2 | const bodyParser = require('body=parser'); app.use(bodyParser()) | cs |
전체 요청 객체의 코드는 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | var express = require('express') var app = express() //const http = require('http') const bodyParser = require('body-parser'); app.use(bodyParser()) app.get('/users/:id', function(request, response) { let params = request.params; let querys = request.query; console.log(params, querys); response.send('hello world'); }); app.post('/', function(request, response) { let body = request.body; console.log(body); response.send('/ POST 요청'); }); app.listen(3000, function() { console.log('Example app listening on port 3000!') }); | cs |
Postman을 통해 body를 정의하고 요청을 내리면 다음과 같은 결과가 나온다.
console 결과는 다음과 같다
{ a : 1 }
2. 응답 객체
Express의 응답 객체는 라우터 콜백 함수의 두번째 인자로 등록된다. 응답 객체에서 사용되는 함수는 다음과 같다.
- download() : 파일 다운로드
- json() : JSON 형태의 데이터 응답
- redirect() : 경로 이동
- render() : pug, ejs 템플릿 엔진 HTML로 렌더링
- send() : 전송 데이터에 대한 형식 변경
- status() : 상태 코드 변경
원하는 응답 형태를 선택해 다음과 같이 구현할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | var express = require('express') var app = express() const http = require('http') app.get('/send', function(request, response) { response.send('hello world'); }); app.get('/download', function(request, response) { response.download('hello world'); }); app.get('/redirect', function(request, response) { response.redirect('hello world'); }); app.get('/json', function(request, response) { response.json('hello world'); }); http.createServer(app).listen(3000, () => { console.log('server on: 3000 Port') }) | cs |
'Skill > Programming - Server & Client' 카테고리의 다른 글
22.[Node.js] Express Generator (0) | 2020.04.22 |
---|---|
21.[Node.js] 미들웨어 (1) | 2020.04.13 |
19.[Node.js] Express (0) | 2020.03.29 |
18.[Node.js] GET, POST 요청 (0) | 2020.03.22 |
17.[Node.js] 서버 요청 개체, 응답 개체 (0) | 2020.03.15 |