이번에는 요청 객체와 응답 객체에 관해서 공부할 것이다.
send()메소드
send() 메소드는 Buffer, Json, Json배열 등 다양한 데이터를 보낼 수 있다.
var express = require('express')
, http = require('http')
var app = express();
app.set('port', process.env.PORT || 3000);
app.use(function(req, res, next){ //미들웨어의 역할을 하는 녀석
console.log('첫번 째 미들웨어에서 요청을 처리함');
res.send({name : '소녀시대', age:20});
})
http.createServer(app).listen(app.get('port'), function(){ // 서버를 구동
console.log('익스프레스 서버를 시작하였습니다 : ' + app.get('port'));
});
이전의 메소드에서 하나의 미들웨어만 가지고 send()메소드를 이용해서 JSON 형식의 name과 age를 보내보았다.
이런 식으로 파일이 전달된 것을 알 수 있다.
status(), sendStatus()메소드
이 두 메소드는 상태코드를 전달하는 역할을 한다.
var express = require('express')
, http = require('http')
var app = express();
app.set('port', process.env.PORT || 3000);
app.use(function(req, res, next){ //미들웨어의 역할을 하는 녀석
console.log('첫번 째 미들웨어에서 요청을 처리함');
res.sendStatus(403);
})
http.createServer(app).listen(app.get('port'), function(){ // 서버를 구동
console.log('익스프레스 서버를 시작하였습니다 : ' + app.get('port'));
});
첫 번재 코드는 sendStatus로 현재의 상태를 코드만 전해주면 된다.
결과가 이렇게 나오며 다른 메세지를 추가하지 않아도 Forbidden이라는 문구가 찍힌다,
res.status(403).send('Forbidden입니다.');
이번에는 status로 상태코드 일 때 메세지를 전달하는 메소드이다. 이 메소드는 send를 동반해야한다.
sendStatus와 다르게 메세지를 넣어야하는 메소드이다.
redirect()메소드
이 메소드는 경로를 강제로 변경하는 메소드이다.
var express = require('express')
, http = require('http')
var app = express();
app.set('port', process.env.PORT || 3000);
app.use(function(req, res, next){ //미들웨어의 역할을 하는 녀석
console.log('첫번 째 미들웨어에서 요청을 처리함');
res.redirect('http://www.google.com');
})
http.createServer(app).listen(app.get('port'), function(){ // 서버를 구동
console.log('익스프레스 서버를 시작하였습니다 : ' + app.get('port'));
});
redirect()메소드를 통해서 구글이 나오도록 했다.
바로 구글 페이지로 이동해서 결과를 볼 수는 없지만 redirect를 이용하면 강제로 경로변경이 가능하다는 것은 확인했다.
헤더와 파라미터
이번에는 파라미터를 통해서 값을 전달 받을 것이다. 주소값에 파라미터를 넣어서 전달하는 방식이다.
var express = require('express')
, http = require('http');
var app = express();
app.set('port', process.env.PORT || 3000);
app.use(function(req,res,next){
console.log('첫번째 미들 웨어에서 요청을 처리함.');
var useAgent = req.header('User-Agent');
var param = req.query.name;
res.writeHead('200', {'Content-Type' : 'text/html; charset=utf8'});
res.write('<h1>이제 슬슬 질릴만큼 했다.'+ param +'</h1>');
res.end();
})
http.createServer(app).listen(app.get('port'), function(){
console.log('익스프레스 서버가 연결되었습니다.' + app.get('port'));
})
코드는 크게 변한 점은 없다 단지 중간에 req.header를 통해서 header를 나타내고 param을 에는 req.query.(헤더변수)로 값을 받아서 사용하는 것을 볼 수 있다.(req.query는 GET방식으로 파타미터를 받음)
이건 그냥 결과 값이다 주소를 보면 localhost:3000인데 이 말인 즉 아무 값도 보내지 않았기 때문에 param이 undefined가 되었다.
이번에는 주소값을 보면 localhost:3000 뒤에 /?name=12355135로 파라미터가 붙어있다. GET은 이런 방식으로 데이터를 주고 받는다.
이렇게 다양하게 주고 받는 방식이 있는데 아무래도 많이 들어본 GET 방식과 POST 방식을 사용하지 않을까 생각이 든다.
'공부 > Node.js' 카테고리의 다른 글
[Node.js] express로 웹 서버 만들기 (쿠키와 세션) (0) | 2020.08.10 |
---|---|
[Node.js] express로 웹 서버 만들기(static 미들웨어, 라우팅) (0) | 2020.08.07 |
[Node.js] express로 웹 서버 만들기(use() 미들웨어) (0) | 2020.08.07 |
[Node.js] 몽구스(Mongoose) (0) | 2020.07.28 |
[Node.js] MongoDB를 사용한 사용자 추가 (0) | 2020.07.28 |