728x90
웹 서버에 요청을 보내는 방식은 여러 가지가 있다. 인터넷 표준으로 정해 둔 이러한 요청 방식을 메소드(Method)라고 부른다.
메소드의 대표적인 예로는 GET과 POST방식이 있다.
HTTP 클라이언트는 GET과 POST 둘다 다른 웹 서버에 데이터를 요청할 수 있다.
그럼 GET 방식과 POST 방식의 차이점은 무엇일까?
HTTP 요청 포맷은 크게 헤더(Header)와 본문(Body) 부분으로 이루어져 있다.
GET 방식은 헤더 부분에 요청 정보들을 넣어 보낸다. http 객체의 get() 메소드를 사용하면 다른 사이트에 요청을 보내고 응답을 받아 처리할 수 있다. get() 메소드의 첫번째 파라미터는 다른 사이트의 정보를 담고 있는 객체이다. 두번째 파라미터는 callback 함수이다. 응답 데이터를 받을 때는 data와 end 이벤트로 처리한다.
var http = require('http');
var options = {
host: 'www.google.com',
port: 80,
path: '/'
};
var req = http.get(options, function(res) {
// 응답 처리
var resData = '';
res.on('data', function(chunk) {
resData += chunk;
});
res.on('end', function() {
console.log(resData);
});
});
req.on('error', function(err) {
console.log("오류 발생 : " + err.message);
});
반면, POST 방식은 본문 부분에 요청 정보를 넣어 보낸다. request() 메소드는 요청을 보내려면 요청 헤더와 본문을 모두 직접 설정해야 한다.
var http = require('http');
var options = {
host: 'www.google.com',
port: 80,
path: '/',
headers: {}
};
resData = '';
var req = http.request(options, function(res) {
// 응답 처리
var resData = '';
res.on('data', function(chunk) {
resData += chunk;
});
res.on('end', function() {
console.log(resData);
});
});
opts.headers['Content-Type'] = 'application/x-www-form-urlencoded';
req.data = "q=actor";
opts.headers['Content-Length'] = req.data.length;
req.on('error', function(err) {
console.log("오류 발생 : " + err.message);
});
// 요청 전송
req.write(req.data);
req.end();
이 두 가지 방식은 기능상으로 요청 정보를 보낸다는 점에서 동일하지만 보안 등의 이슈가 있을 때나 파일을 요청 정보로 넣어 보내야 하는 경우(파일 업로드)에는 POST 방식을 주로 사용한다.
728x90
'💻 Study > 웹' 카테고리의 다른 글
[netlify] Page Not Found Error (React Router) (1) | 2022.01.03 |
---|---|
[Netlify] Treating warnings as errors because process.env.CI = true. (0) | 2022.01.03 |
[Javascript] '==' 와 '===' 뭐가 다를까? (0) | 2021.02.24 |
#2-2 USEEFFECT (0) | 2021.01.12 |
#2-1 USEEFFECT (0) | 2021.01.12 |