codeStates front-end/node(server)
Mini-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μ΄κΉμ§ νμ©λλ€
};
λ°μν