Node.js_2. 서버 구축
서버 구축을 위한 5단계
서버 구축을 위한 단계는 다음과 같다.
- 1단계: 요청 메소드 정리
- 2단계: 라우터 정리
- 3단계: 요청 데이터 받기
- 4단계: 동작 구현
- 5단계: 데이터 + 상태 리턴
기본 세팅
Node.js에서 서버 구현을 위한 가장 기본적인 모듈은 바로 http로 다음과 같이 require를 통해 불러올 수 있다. 이는 Node.js에서 기본적으로 제공하는 패키지로 따로 npm을 이용해 설치할 필요는 없다.
const http = require('http');
서버 구축을 위한 객체인 createServer를 설정한 후 다음과 같은 콜백함수를 인자로 받는다.
- request: 응답받은 내용
- response: 받은 응답에 대한 처리
http.createServer((request, response) => {
// 서버 구축
}).listen(8080);
마지막의 listen(8080)은 사용하려는 포트 번호로, 80이 기본값이며 프론트 서버는 주로 3000을 사용한다.
1단계: 요청 메소드 정리
createServer의 request는 다시 다음처럼 나누어 볼 수 있다.
const { method, url, header } = request;
이를 이용해 특정 메소드에 실행할 코드를 정리한다.
if (request.method === 'POST') {
// do something
}
2단계: 라우터 정리
다음으로 특정 주소로 라우팅 되었을 경우를 고려하여 코드를 정리한다.
if (request.method === 'POST') {
if (request.url === '/profile') {
// do something
}
}
3단계: 요청 데이터 받기
이제 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 값을 받아온다
)}
}
}
- buffer:
- chunk:
4단계: 동작 구현
이제 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(); // 동작 구현
)}
}
}
5단계: 데이터 + 상태 리턴
마지막으로 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 // 통신 가능 시간
};
참고
HTTP 트랜잭션 해부
www.zerocho.com - 서버 만들기
Author And Source
이 문제에 관하여(Node.js_2. 서버 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sy3783/Node.js3.-서버-구축하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)