1. node 서버로 HTTP 모듈 사용
- request.body 받아오는 방식이 복잡함 (chunk, Buffer)
- CORS 설정을 각각 메서드마다 돌려줘야 함
const http = require("http");
const PORT = 4999;
const ip = "localhost";
const server = http.createServer((request, response) => {
const { method, url } = request;
let body = [];
request
.on("data", (chunk) => {
body.push(chunk);
})
.on("end", () => {
body = Buffer.concat(body).toString();
if (method === "OPTIONS") {
response.writeHead(201, defaultCorsHeader);
response.end();
}
if (method === "POST" && url === "/lower") {
response.writeHead(201, defaultCorsHeader);
response.end(body.toLowerCase());
} else if (method === "POST" && url === "/upper") {
response.writeHead(201, defaultCorsHeader);
response.end(body.toUpperCase());
}
})
.on("error", (err) => {
console.error(err.stack);
});
console.log(`http request method is ${method}, url is ${url}`);
});
server.listen(PORT, ip, () => {
console.log(`node 서버 열렸다 🔥 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,
};
2. Express 서버로 변경
- 미들웨어 추가 가능함
- 라우터 제공함
const express = require("express");
const app = express();
const router = express.Router();
const cors = require("cors");
const PORT = 4999;
app.use(cors());
app.use(express.json({ strict: false }));
app.use((req, res, next) => {
const { method, url } = req;
console.log(`http request method is ${method}, url is ${url}`);
next();
});
app.get("/", (req, res) => {
res.send("Hello World!!!!!!!!!");
});
app.post("/lower", (req, res) => {
res.json(req.body.toLowerCase());
});
app.post("/upper", (req, res) => {
res.json(req.body.toUpperCase());
});
app.listen(PORT, () => {
console.log(
`express 서버로 리팩토링👐 http server listen on 'http://localhost:${PORT}'`
);
});