본문 바로가기

Node.js

18. HTTP transaction

서버 생성 

 

const http = require('http');

const server = http.createServer((req, res) => {
  //서버를 생성
});

 

  1. HTTP 요청이 서버에 들어오면 node가 transaction을 다루려고, reqest와 response 객체를 전달하며 요청 헨들러 함수를 호출한다
  2. 요청을 처리하려면 listen 메서드가 server 객체에서 호출 되어야한다. 대부분 서버가 사용하고 있는 포트 번호를 listen에 전달하면 된다.

Method, URL, Header

 

요청을 처리할 때, 우선 메서드와 URL을 확인한 후 이와 관련된 적절한 작업을 실행한다. 

 

Body

 

스트림에 이벤트 리스너를 등록하거나 다른 스트림에 파이프로 연결할 수 있다. 스트림의 'data'와 'end'이벤트에 이벤트 리스너를 등록해서 데이터를 받을 수 있다.

 

각 'data' 이벤트에서 발생시킨 결과는 Buffer이다.이 결과 값은 문자열 데이터이다. 이 데이터를 배열에 수집한 뒤 'end' 이벤트에서 이어 붙인 다음 문자열로 만드는 것이 가장 좋다.

 

const server = http.createServer((req, res) => {
  const url = req.url; // what?
  const method = req.method; // how? action?
  if (url === '/courses') {
    if (method === 'GET') {// 사용자가 데이터를 가지고(읽고) 싶다면,
      res.writeHead(200, {'Content-Type': 'application/json'});
      res.end(JSON.stringify(courses));
    } else if (method === 'POST') {
      const body = [];
      req.on('data', chunk => {
        console.log(chunk);
        body.push(chunk); // 버퍼 형태의 데이터를 배열에 담음.
      });

      req.on('end', () => {
        const course = JSON.parse(Buffer.concat(body).toString()); 
        // Buffer 형태의 데이터를 문자열로 풀어준 뒤 배열에 담음.
        courses.push(course);
        console.log(courses);
        res.writeHead(201);
        res.end();
      })
    }
  }
});

 

✔ 참고

 

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

 

'Node.js' 카테고리의 다른 글

19. [NPM] dependencies vs. devDependencies  (0) 2022.05.04
17. chunk, buffer , stream  (0) 2022.04.08
16. Stream  (0) 2022.04.08
15. body-parser  (0) 2022.03.11
14. CORS  (0) 2022.03.11