Develop/Node.js
2020/11/13 - TIL (node.js / HTTP Module Post요청)
ParkJava
2020. 11. 14. 00:47
node.js HTTP Module
http 모듈은 노드에서 가장 기본적인 웹 모듈이며 http 웹 서버뿐만 아니라 클라이언트를 생성하는 것과 관련된 모든 기능을 담당하는 모듈입니다.
node.js에는 http라는 내장 모듈이 있어 node.js가 HTTP를 통하여 데이터를 전송할 수 있습니다.
- require('http') 사용
const http = require('http');
Create Server
-
모든 웹 서버 어플리케이션은 createServer 메소드를 사용하여 서버 객체를 생성합니다.
- 서버가 실행된 후의 동작을 콜백함수로 등록합니다. 콜백 함수 안에는 request, response가 인자로 들어갑니다.
- listen메소드를 사용하여 포트에 연결합니다.
const http = require('http'); // 서버를 만드는 모듈 불러옴
http.createServer((request, response) => { // 서버 만드는 메소드
console.log('server start!');
}).listen(8080);
Request
속성
- method : 요청된 method(GET, POST,...)에 접근
- url : 요청된 url에 접근
- headers : 요청 메시지 헤더
createServer 메소드의 인자로 전달된 request 객체는 'data'와 'end'이벤트에 의하여 요청된 데이터에 접근할 수 있습니다.
const http = require('http'); // 서버를 만드는 모듈 불러옴
http.createServer((request, response) => { // 서버 만드는 메소드
let body = [];
request.on('data', (chunk) => {
body.push(chunk);
}).on('end', () => {
body = Buffer.concat(body).toString();
// 여기서 `body`에 전체 요청 바디가 문자열로 전환됩니다.
});
}).listen(8080);
Response
응답 메시지를 작성할 때는 response 객체를 사용하여 클라이언트에게 웹페이지를 제공합니다.
메소드
- writeHead(statusCode, object) : response header를 작성합니다.
- end([data], [encoding]) : 응답의 본문(body)을 작성합니다.
const http = require('http'); // 서버를 만드는 모듈 불러옴
http.createServer((request, response) => { // 서버 만드는 메소드
let body = [];
request.on('data', (chunk) => {
body.push(chunk);
}).on('end', () => {
body = Buffer.concat(body).toString();
// 여기서 `body`에 전체 요청 바디가 문자열로 전환됩니다.
response.writeHead(200, {
'Content-Type': 'application/json',
'X-Powered-By': 'bacon'
});
response.end();
}).listen(8080);
POST 처리 예제
const http = require('http');
http.createServer((request, response) => {
if (request.method === 'POST' && request.url === '/echo') {
let body = [];
request.on('data', (chunk) => {
body.push(chunk);
}).on('end', () => {
body = Buffer.concat(body).toString();
response.end(body);
});
} else { // post접근이 아니라면 404 상태코드 반환
response.statusCode = 404;
response.end();
}
}).listen(8080);
참고 : https://nodejs.org/ko/docs/guides/anatomy-of-an-http-transaction/
HTTP 트랜잭션 해부 | Node.js
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org