Web Server βπ»
ν΄λΌμ΄μΈνΈ μμ²μ λν΄ μλ΅ν μ μλ νλ‘κ·Έλλ°μ λ§λ€κΈ° μν΄ node.jsλ₯Ό μ΄μ©νλ€.
const http = require('http');
let server = http.createServer((requset, response) => {
response.end('Hello world!');
});
server.listen(3000); // portλ²νΈ
createServer
ν¨μμ μΈμλ‘ λ€μ΄μ€λ ν¨μμ response
μΈμλ₯Ό μ¬μ©νλ©΄ ν΄λΌμ΄μΈνΈμ μμ²μ λν΄ μλ§μ μλ΅μ μ€ μ μλ€.response
κ°μ²΄μ end
λ©μλλ₯Ό μ¬μ©νλ©΄ μνλ μλ΅μ μ€ μ μλ€.createServer
λ₯Ό μ΄μ©νμ¬ μΉ μλ² κ°μ²΄λ₯Ό λ§λ€μ΄μΌ νλ€.createServer
μ μ λ¬λ ν¨μκ° ν λ²μ© νΈμΆλλ€.request
μ response
κ°μ²΄λ₯Ό μ λ¬νλ©° μμ² νΈλ€λ¬ ν¨μλ₯Ό νΈμΆνλ€.let body = [];
request.on('data', (chunk) => {
body.push(chunk); //λ°μ΄ν°κ° λ€μ΄μ€λ©΄ μ½λ°±ν¨μ μ€ν
}).on('end', () => {
body = Buffer.concat(body).toString(); //λ°μ΄ν°κ° λ€μ΄μ€λ κ² λλλ©΄ μ½λ°±ν¨μ μ€ν
// μ¬κΈ°μ `body`μ μ 체 μμ² λ°λκ° λ¬Έμμ΄λ‘ λ΄κ²¨μμ΅λλ€.
});
if (request.method === 'POST') { //POSTμμ² μ€μμ
if (request.url === '/lower') { //urlμ΄ /lowerμΈ κ²½μ°
} else if (request.url === '/upper') {//urlμ΄ /upperμΈ κ²½μ°
} else { //κ·Έ μΈμ μμ²(μλ¬ μλ΅)
}
}
if (request.method === 'OPTIONS') { //CORS κ΄λ ¨ ν€λλ₯Ό OPTIONS μλ΅μ μ μ©
}
request
μ λ©μλκ° OPTIONμΈ κ²½μ°λ ν΄λΌμ΄μΈνΈκ° preflight request
λ₯Ό 보λμ λ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.statusCode = 200; //μλ΅μ½λ
response.setHeader('Content-Type', 'application/json');
// μ£Όμ: μ λ μ€μ λ€μ ν μ€λ‘ λ체ν μλ μμ΅λλ€.
// response.writeHead(200, {'Content-Type': 'application/json'})
const responseBody = { headers, method, url, body };
response.write(JSON.stringify(responseBody));
response.end();
// μ£Όμ: μ λ μ€μ λ€μ ν μ€λ‘ λ체ν μλ μμ΅λλ€.
// response.end(JSON.stringify(responseBody))
--> μμ²λ°λλ₯Ό μλ¬Έμλ‘ λ°κΏμ μλ΅νλ κ²½μ°λ μλμ κ°λ€.
req.on('end', () => {
data = data.toLowerCase();
res.writeHead(201, defaultCorsHeader); //(μλ¬μ½λ, μλ΅ν€λ)
res.end(data);
});
HTTP μμ²/μλ΅ μ²λ¦¬ κ³Όμ μ μμΈνκ² μ€λͺ
νκ³ μλ 곡μ λ¬Έμ
λ§ν¬ν
μ€νΈ
cross origin
μμ 리μμ€(μλ²μμ)μ μμ²νμ¬ μ¬μ©νλ€.cross-origin HTTP
μμ²μ μ ννλ€.XML HTTP Request
κ° cross-domain
μμ²μ ν μ μλλ‘ μμ²node.js
μμ μ€νλ μλ² νλ‘κ·Έλ¨μ κ°νΈνκ² λ§λ€ μ μκ² ν΄μ£Όλ νλ μμν¬Express
λ₯Ό μ¬μ©νλ©΄, μλ² νλ‘κ·Έλ¨μ΄ κ°μΆ°μΌνλ κΈ°λ₯μ νΈνκ² κ΅¬νν μ μλ€.μ€μΉ λ°©λ²
npm install express
μ
λ ₯