HTTP 트랜잭션 해부 21.04.30
in Dev on Java Script
// http 내장 모듈 불러오기
const http = require('http');
//[서버 생성]
// createServer : 웹 서버 객체(=== server) 생성
const server = http.createServer((req, res) => {
// 객체 구조 분해 할당
// req(요청)의 method와 url을 가지고 와서 각 변수에 담아준다.
const { headers, method, url } = req;
// headers = req.headers, method = req.method, url = req.url
// headers 객체의 user-agent(ket)의 값을 할당
const userAgent = headers['user-agent']
// [Body Request]
let body = [];
// 에러 처리
req.on('error', err => console.error(err.stack))
// 버퍼 데이터를 body에 넣어준다.
.on('data', chunk => body.push(chunk))
// 배열에 있는 데이터를 스트링으로 변경.
.on('end', () => {
body = Buffer.concat(body).toString() ;
// [Response]
// 에러 처리
res.on('error', (err) => console.error(err));
// 요청의 end 함수 내에서 응답 수행
// [응답의 Head 설정]
res.statusCode = 201; // statusCode 코드를 설정해주지 않을 경우 기본 값은 200
res.setHeader('Content-Type', 'application/json');
// 위 코드를 writeHead를 사용하여한번에 작성 가능
res.writeHead(201, 'Content-Type': 'application/json');
// 데이터 지정
const responseBody = { headers, method, url, body };
// [바디 응답]
// responseBody를 직렬화해서 클라이언트에 응답
res.write(JSON.stringify(responseBody));
res.end();
// 위 코드를 한줄로 작성 가능
response.end(JSON.stringify(responseBody))
})
});
// 서버와 포트 연결
server.lsten(포트번호)