일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 백준알고리즘
- url parsing
- AWS
- ELB
- 서버구축
- EC2
- 다익스트라 알고리즘
- 토이프로젝트
- 알고리즘
- mysql
- Router
- 리액트
- 완전탐색
- EventListener
- sort
- 정렬
- react
- 탐욕법
- Spring Boot
- nodejs
- 스터디
- BFS
- 라우터
- 자료구조
- 동적프로그래밍
- 브루트포스
- java
- 백준
- Algorithm
- spring
- Today
- Total
공부하는 블로그
Node.js | Express : Request Parameters 본문
GET method
GET 방식의 요청에서 파라미터를 전송하는 방법은 두 가지가 있다. 쿼리스트링(Querystring)이나 경로(Path)를 통하여 파라미터를 전달할 수 있다. 각각의 방법을 알아보자.
Querystring
'req.param()'을 이용하여 쿼리스트링을 통해 요청된 파라미터를 받아낼 수 있다.
app.get('/user', function (req, res) {
var u_name = req.param('name');
var u_age = req.param('age');
res.send("User Name : " + u_name + " / User Age : " + u_age);
});
쿼리스트링의 id는 name과 age로 하여 보내고자 하는 데이터를 서버에 요청하자. 'http://localhost:3000/user?name=kim&age=20'로 페이지 요청을 해보면 다음과 같이 나타난다.
Path
'req.param()'을 이용하여 파라미터를 받을 수도 있지만 'req.params'를 이용하는 것이 더욱 바람직하다. 'req.params'는 json 객체로 데이터에 접근하는 key는 라우팅할 때 '/:key' 형식으로 지정이 가능하다. 전달하고자 하는 데이터(value)는 경로에 맞는 위치에 입력하여 요청하면 된다. 아래의 예제코드를 살펴보자.
app.get('/user/:name/:age', function (req, res) {
var params = req.params;
console.log(params);
res.send("User Name : " + params.name + " / User Age : " + params.age);
});
'req.params' 객체의 key는 name과 age로 지정하였고 params의 데이터 형식을 알아보기 위해 콘솔에 찍어보았다. 이제 데이터를 경로에 맞는 위치에 입력하여 전송해보자. 'http://localhost:3000/user/kim/20'로 페이지 요청을 보내면 다음과 같이 나타난다.
POST method
POST 방식 요청의 파라미터 전송은 우리의 눈에 보이지 않는 body에서 이루어진다. body를 통해 데이터를 전송받기 위해서는 'req.on()'을 사용할 수도 있지만 외장 모듈인 'body-parser'를 사용하면 간편하다. 만약 Express v4.16.0 이상을 사용한다면 익스프레스에 자동으로 내장되어있다.
$ npm install body-parser
설치가 완료되면 모듈을 임포트한 후 body-parser를 이용할 body의 종류를 등록해야한다.
var bodyParser = require('body-parser'); // 모듈 import. Express v4.16.0이상은 생략 가능
app.use(bodyParser.json()); // json 등록
app.use(bodyParser.urlencoded({ extended : false })); // URL-encoded 등록
URL-encoded는 주소 형식으로 데이터를 보내는 방식이다. 'extended' 옵션이 false면 쿼리스트링을 해석함에 있어서 querystring 모듈을 사용해야하고 true면 qs 모듈을 사용해야 한다. 모든게 완료되면 'req.body'를 이용하여 파라미터를 받을 수 있게 된다. 이외에도 Raw나 Text형식의 body를 추가로 해석할 수 있으나 이 경우에는 익스프레스에 내장된 body-parser가 아니라 따로 body-parser를 설치하여 사용해야 한다.
모든 준비가 완료되면 'req.body'를 이용하여 데이터를 전송받을 수 있다.
app.get('/', function (req, res) {
var template =
`<!DOCTYPE html>
<html>
<body>
<form action='/login' method='post'>
ID : <input type='text' name='id'><br>
PWD : <input type='password' name='pwd'><br>
<input type='submit' value='login'>
</form>
</body>
</html>`;
res.writeHead(200, {'ContentType':'text/html'});
res.write(template);
res.end();
});
app.post('/login',function (req, res) {
var body = req.body;
console.log(body);
res.send("ID : " + body.id + " / PWD : " + body.pwd);
});
간단하게 POST 요청을 할 페이지와 요청된 데이터를 받아서 처리할 페이지를 만들었다. 'req.body'는 json 객체로 콘솔에 출력하여 확인해보았다. 이제 서버를 실행하여 결과를 확인해보자.
'Node.js' 카테고리의 다른 글
Node.js | Node.js - MySQL : 연동하기 (16) | 2019.12.28 |
---|---|
Node.js | Express : Template Engine (0) | 2019.12.28 |
Node.js | Express : Routing (0) | 2019.12.19 |
Node.js | Express : Intro (0) | 2019.12.19 |
Node.js | GET & POST 요청에 응답하기 (0) | 2019.12.17 |