http모듈 사용
const http = require("http");
const PORT = 4999;
const ip = "localhost";
const server = http.createServer((request, response) => {
if (request.method === "OPTIONS") {
response.writeHead(200, defaultCorsHeader);
response.end();
} else if (request.method === "POST" && request.url === "/upper") {
let body = [];
request
.on("data", (chunk) => {
body.push(chunk);
})
.on("end", () => {
body = Buffer.concat(body).toString();
response.writeHead(201, defaultCorsHeader); //새로운 리소스를 create하는 경우는 아니라 상태코드가 201이어야 할까??
response.end(body.toUpperCase());
});
} else if (request.method === "POST" && request.url === "/lower") {
let body = [];
request
.on("data", (chunk) => {
body.push(chunk);
})
.on("end", () => {
body = Buffer.concat(body).toString();
response.writeHead(201, defaultCorsHeader);
response.end(body.toLowerCase());
});
} else {
response.statusCode = 404;
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,
};
Express 프레임워크 사용
const express = require("express");
const cors = require("cors");
const app = express();
app.use(cors());
app.use(express.json({ strict: false }));
app.use(express.urlencoded({ extended: true }));
const PORT = 4999;
const ip = "localhost";
app.post("/upper", function (req, res) {
res.status(201).json(req.body.toUpperCase());
});
app.post("/lower", function (req, res) {
res.status(201).json(req.body.toLowerCase());
});
app.use((req, res, next) => {
res.status(404).send("Not Found!");
});
app.use(function (err, req, res, next) {
console.error(err.stack);
res.status(500).send("Something Broke!");
});
app.listen(PORT, ip, () => {
console.log(`http server listen on ${ip}:${PORT}`);
});