(Node.js)웹 서버 요청 및 전달 받기

JM.dev·2021년 6월 30일
0
post-custom-banner

서버 생성

const http = require('http');

const server = http.createServer((request, response) => {
  // 여기서 작업이 진행됩니다!
});

서버에서 정보를 요청받기위해 require함수를 이용하여 HTTP의 각종 기능을 http에 할당하여 사용하고
http 오브젝트의 "createServer"메서드를 호출하여 http.Server 개체를 만든다. 이 서버로 오는 HTTP 요청마다 createServer에 전달된 함수가 한 번씩 호출됩니다.

요청 바디

let body = [];
request.on('data', (chunk) => {
  body.push(chunk);
}).on('end', () => {
  body = Buffer.concat(body).toString();
  // 여기서 `body`에 전체 요청 바디가 문자열로 담겨있습니다.
});

핸들러에 전달된 request 객체는 'data'와 'end' 이벤트에 이벤트 리스너를 등록해서 데이터를 받을 수 있습니다.

참고

  • on 메소드 - 콜백을 사용하는 메소드로 콜백의 개념을 가지고있다(예외 처리우선 등등)
    ('err',function()), ('data',function()), ('end',function())
response.writeHead(200, defaultCorsHeader);
response.end(body);
  • writeHead 메소드 - 명시적인 헤더 데이터 전송
    첫번째 인자는 상태 코드를 지정하고 두번째인수에 헤더 정보를 연관 배열로 정리한 것이다.

  • end 메소드 - 컨텐츠 출력 완료(응답 종료) 위네용으로 는 body를 response를 하라는 뜻으로 설명이된다.

const defaultCorsHeader = {
  'Access-Control-Allow-Origin': '*',
  'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
  'Access-Control-Allow-Headers': 'Content-Type, Accept',
  'Access-Control-Max-Age': 10
};

defaultCorsHeader를 해석하면
1.모든 도메인(*)을허용한다
2.메소드는 'GET, POST, PUT, DELETE, OPTIONS' 만 허용한다
3.헤더는 'Content-Type, Accept'만 쓸수있다
4.preflight request는 10초까지 허용한다(요청시간=>request.method === 'OPTIONS')

으로 설명을 마치며 'Content-Type, Accept'은 공부후에 블로그 작성을 하도록하겠습니다.

profile
차곡차곡 한단계 씩
post-custom-banner

0개의 댓글