서버 구축을 위한 단계는 다음과 같다.
Node.js에서 서버 구현을 위한 가장 기본적인 모듈은 바로 http로 다음과 같이 require를 통해 불러올 수 있다. 이는 Node.js에서 기본적으로 제공하는 패키지로 따로 npm을 이용해 설치할 필요는 없다.
const http = require('http');
서버 구축을 위한 객체인 createServer를 설정한 후 다음과 같은 콜백함수를 인자로 받는다.
http.createServer((request, response) => {
// 서버 구축
}).listen(8080);
마지막의 listen(8080)은 사용하려는 포트 번호로, 80이 기본값이며 프론트 서버는 주로 3000을 사용한다.
createServer의 request는 다시 다음처럼 나누어 볼 수 있다.
const { method, url, header } = request;
이를 이용해 특정 메소드에 실행할 코드를 정리한다.
if (request.method === 'POST') {
// do something
}
다음으로 특정 주소로 라우팅 되었을 경우를 고려하여 코드를 정리한다.
if (request.method === 'POST') {
if (request.url === '/profile') {
// do something
}
}
이제 request를 통해 데이터를 받는 코드를 작성한다. 아래의 경우 data라는 문자열을 설정한 후 chunk를 data에 추가해주고 있다.
if (request.method === 'POST') {
if (request.url === '/profile') {
let data = '';
request.on('data', function(chunck) {
// on: event에 맞춰 콜백함수를 실행하는 메소드
// 'data'는 약속된 키워드
data = data + chunk;
// chunk를 통해서 쪼금씩 연속적으로 body 값을 받아온다
)}
}
}
이제 request를 통해 받은 data에 특정 동작을 구현하는 코드를 작성한다.
if (request.method === 'POST') {
if (request.url === '/profile') {
let data = '';
request.on('data', function(chunck) {
data = data + chunk;
)}.on('end', function() {
data.toUpperCase(); // 동작 구현
)}
}
}
마지막으로 response를 이용해 헤더, 바디를 설정하여 리턴한다.
if (request.method === 'POST') {
if (request.url === '/profile') {
let data = '';
request.on('data', function(chunck) {
data = data + chunk;
)}.on('end', function() {
data.toUpperCase();
response.writeHead(201, defaultCorsHeader); // 헤더
response.end(data); // 바디
)};
} else { // 에러처리
response.writeHead(404, defaultCorsHeader);
response.end("Not found 404");
}
}
const defaultCorsHeader = {
'Access-Control-Allow-Origin': '*', // 허용할 서버
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS', // 허용할 메소드
'Access-Control-Allow-Headers': 'Content-Type, Accept', // 허용할 header 속성
'Access-Control-Max-Age': 10 // 통신 가능 시간
};