Node.js HTTP 모듈

const http = require('http'); // 서버 객체 생성 const server = http.createServer((request, response) => { // ... });
JavaScript
복사

요청 처리 설정

request.on('event', function)
JavaScript
복사
on 메소드는 지정된 이벤트 처리를 통합한다.
첫 번째 인수는 이벤트 이름을, 두 번째 인수는 통합 처리 함수를 받는다.
let body = []; request.on('data', (chunk) => { // 요청에서 데이터가 올 때마다 body.push(chunk); }).on('end', () => { // 데이터 전달이 끝나면 body = Buffer.concat(body).toString(); }
JavaScript
복사
request - 스트림
chunk - 버퍼

서버 대기 시작

server.listen()
JavaScript
복사
클라이언트에서 요청이 있으면 받아 처리함
첫번째 인수는 포트번호, 다음은 호스트 이름, 백 로그, 콜백 함수

헤더 정보 내보내기

response.writeHead(상태코드, {})
JavaScript
복사
헤더 정보를 response에 작성해서 내보냄
첫 번째 인자는 상태코드, 두 번째 인자는 헤더 정보를 연관 배열로 정리

컨텐츠 내보내기

response.write()
JavaScript
복사
인수에 지정한 값이 바디 부분의 컨텐츠로 작성된다.

컨텐츠 출력 완료(응답 종료)

response.end()
JavaScript
복사
스트림에 보낼 데이터의 마지막 비트를 선택적으로 전달

CORS 설정

http 모듈 사용 시 cors 설정하는 방법
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 }; response.writeHead(200, defaultCorsHeader);
JavaScript
복사

예시

const server = http.createServer((request, response) => { if (request.method === 'OPTIONS') { response.writeHead(200, defaultCorsHeader); response.end('hello mini-server sprints'); } else if (request.method === 'POST') { let body = []; request.on('data', (chunk) => { body.push(chunk); }).on('end', () => { body = Buffer.concat(body).toString(); if (request.url === '/upper') { response.writeHead(200, defaultCorsHeader); response.end(body.toUpperCase()); } else if (request.url === '/lower') { response.writeHead(200, defaultCorsHeader); response.end(body.toLowerCase()); } }); } else { response.writeHead(400, defaultCorsHeader); response.end('bad request 400'); } console.log( `http request method is ${request.method}, url is ${request.url}` ); });
JavaScript
복사