나는 노드가 어렵다. 서버가 어려운 걸지도 모르겠다.
원래라면 SQL,Node.js, React를 써서 프로젝트를 해야하는데
내가 너무 얕봤다.
SQLD,학은제를 하면서 하기엔 당장은 저 플젝 완성을 못할 거 같는 생각에
투두리스트 먼저 해보기로 했다.(11.07부턴 코드잇 가서 배운다..!)
일단 모습은 이렇고 진짜 별 거 없다. 단순 CRUD가 끝이다.
입력 시 input을 초기화 하는 것과 같은 기능은 안넣었다.
파일구조는 이렇게 되어있다.
server..js는 서버코드 , todo.html은 웹에 표기, 함수는 todo.js에 넣어놨다.
express,cors를 사용하였는데 각각 이런 놈들이다.
express - 서버 구성을 좀 더 쉽게 해주는 프레임워크
cors -서버에 허용할 도메인을 지정해줘서 보안이랑 요청 관리 쉽게 해주는 라이브러리
---
너무 많은 것을 쓸 순 없으니 간단하게 차이점을 알아보겠다.
폴더
node-server : 노드만 사용해서 기능구현
node-express : 노드+express,cors를 사용하여 기능구현
// node 기본 서버
const http = require("http");
let todo = [
{ id: 1, content: "더미데이터" },
{ id: 2, content: "터미네이터" },
];
const server = http.createServer((req, res) => {
// setHeader값을 이렇게 쓰면 한국어 안깨지고 가능
console.log(req.method + "요청이 들어왔어요!");
res.setHeader("Access-Control-Allow-Origin", "http://127.0.0.1:5500");
res.setHeader("Access-Control-Allow-Methods", "OPTIONS,GET,POST,PUT,DELETE");
//preflight 요청 처리
if (req.method === "OPTIONS") {
return res.end("요청 보내세요.");
}
//PUT
if (req.method === "PUT") {
let data;
req.on("data", (chunk) => {
data = chunk.toString();
});
req.on("end", () => {
const newTodo = JSON.parse(data);
todo = todo.map((el) => {
if (el.id === newTodo.id) {
return newTodo;
} else {
return el;
}
});
});
return res.end("Todo가 수정됐습니다.");
}
//만든 서버 열기
server.listen(3000, () => {
console.log("서버가 열렸어요");
});
// express
const express = require("express");
const cors = require("cors");
let todo = [
{ id: 1, content: "더미데이터" },
{ id: 2, content: "터미네이터" },
];
//express 사용하겠습니다.
const app = express();
// cors를 손쉽게 설정한다. origin:주소 | method : 주소에 허용되는 메소드
app.use(
cors({
origin: "http://127.0.0.1:5500",
methods: ["OPTION", "GET", "POST", "PUT", "DELETE"],
})
);
// 데이터를 json,text 등으로 원할히 주고 받기 위한 코드
app.use(express.json());
app.use(express.text());
// options: preflight(내가 보내려는 요청이 괜찮나?라고 서버에게 먼저 물어보기)
app.options("/", (req, res) => {
return res.send("요청 보내세요");
});
app.put("/", (req, res) => {
todo = todo.map((el) => {
if (el.id === req.body.id) {
return req.body; // 전체 객체로 반환
} else {
return el;
}
});
return res.send("Todo가 수정됐습니다.");
});
코드는 이러한데, 간단히 요약하면
cors - cors설정이 편리해진다.
express : 경로별로 처리하는 코드가 훨씬 간결해지고 에러핸들링이 편해진다.
미들웨어 지원,cors, helmet, body-parser 같은 라이브러리를 손쉽게 통합 등 여러 이점이 있지만
무엇보다 코드가 간결해지는 게 가장 큰 장점인 거 같다.
'Front-End > Node.js' 카테고리의 다른 글
새로운 프로젝트 시작 (4) | 2024.10.09 |
---|