-
Mini-Node ServercodeStates front-end/node(server) 2023. 2. 8. 16:20๋ฐ์ํ
๐ Mini-Node Server
๐์๋ฒ์คํ
node server/basic-server.js
๐ ํ์ต ๋ชฉํ
- POST์ ๋ฌธ์์ด์ ๋ด์ ์์ฒญ์ ๋ณด๋ผ ๋๋ HTTP ๋ฉ์์ง์ body(payload)๋ฅผ ์ด์ฉํฉ๋๋ค.
- ์๋ฒ๋ ์์ฒญ์ ๋ฐ๋ฅธ ์ ์ ํ ์๋ต์ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด์ผ ํฉ๋๋ค.
- CORS ๊ด๋ จ ํค๋๋ฅผ OPTIONS ์๋ต์ ์ ์ฉํด์ผ ํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ์ preflight request์ ๋ํ ์๋ต์ ๋๋ ค์ค์ผ ํฉ๋๋ค.
- preflight request์ ๋ํ ์๋ต ํค๋๋ ์ด๋ฏธ ์์ฑ๋์ด ์์ต๋๋ค.
basic.server.js
const http = require('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'){ //๋ฉ์๋๊ฐ post์ด๊ณ ,ur์ด upper์ด๋ฉด ๋๋ฌธ์ response.writeHead(200, defaultCorsHeader) response.end(body.toUpperCase()) }else if(request.method === 'POST' && request.url === '/lower'){ // ๋ฉ์๋ post์ด๊ณ , 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, () => { 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์ด๊น์ง ํ์ฉ๋๋ค };
๋ฐ์ํ'codeStates front-end > node(server)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
StatesAirline Server (0) 2023.02.09 Refactor Express (0) 2023.02.08 CORS ๊ฐ์ (0) 2023.02.06 REST API - ๋๋ง์ ์ธ์ด๋ก ๋ธ๋ก๊น ํด๋ณด๊ธฐ (0) 2023.01.31 ๋ธ๋ผ์ฐ์ ์ ์๋ ์๋ฆฌ(๋ณด์ด๋ ๊ณณ) - AJAX, SSR๊ณผ CSR (0) 2023.01.30