-
4.6 Mini Node Server코드스테이츠/JavaScript 2023. 4. 7. 00:12
HTTP 트랜지션 해부에 관한 Node.js 레퍼런스를 참고
https://nodejs.org/en/docs/guides/anatomy-of-an-http-transactionAnatomy of an HTTP Transaction | Node.js
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
- POST에 문자열을 담아 요청을 보낼 때는 HTTP 메시지의 body(payload)를 이용합니다.
- 서버는 요청에 따른 적절한 응답을 클라이언트로 보내야 합니다.
- CORS 관련 헤더를 OPTIONS 응답에 적용해야 합니다.
- 클라이언트의 preflight request에 대한 응답을 돌려줘야 합니다.
- preflight request에 대한 응답 헤더는 이미 작성되어 있습니다.
요구조건
basic-server.js
const http = require('http');//http 모듈을 불러옴 const PORT = 4999; const ip = 'localhost'; const server = http.createServer((request, response) => { //서버생성 const {method, url, headers} = request let body = []; request.on('data', (chunk) => { body.push(chunk); }).on('end', () => { body = Buffer.concat(body).toString(); if(request.method === 'POST' && request.url === '/upper'){ //요청 URL에 따라 다른 응답을 전송 response.writeHead(200, defaultCorsHeader) //whiteHead 메소드를 이용해 헤더 데이터를 전송하다. response.end(body.toUpperCase()) //end 메소드는 모든 응답 헤더와 본문이 전송됐음을 서버에 알린다. }else if(request.method === 'POST' && request.url === '/lower'){ response.writeHead(200, defaultCorsHeader) response.end(body.toLowerCase()) }else if(request.method === 'OPTIONS'){ response.writeHead(200, defaultCorsHeader) response.end() }else{ response.writeHead(404, defaultCorsHeader) response.end('잘못된 요청') } }); }); server.listen(PORT, ip, () => { // listen() 메서드를 사용하여 실제로 서버를 구동할때 사용 console.log(`http server listen on ${ip}:${PORT}`); }); // 모든 응답때 보내줘야한다 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 // preflight request는 10초까지 허용된다 };
'코드스테이츠 > JavaScript' 카테고리의 다른 글
4.10 기술면접 준비 (0) 2023.04.10 4.6 S2U10 종합퀴즈 (0) 2023.04.07 3.29 [HTTP/네트워크] REST API (0) 2023.03.29 3.28 SSR vs CSR (0) 2023.03.28 3.28 브라우저의 작동원리 AJAX (0) 2023.03.28