HTTP 트랜잭션 해부 21.04.30


// 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(포트번호)





© 2020.11. by creamer

Powered by CREAMer