-
Node.js] 라우터 요청 : url 루트의 요청에 따라 기능이 달라지는 간단한 서버Node.js 2023. 12. 1. 14:38
1. 라우터 기본 구조 만들기
const http = require("http"); const server = http.createServer((req, res) => { const url = req.url; // url 값을 변수에 저장 if (url === "/") { // url에 따라 다른 응답을 보내도록 조건 설정 res.write("<html>"); res.write("<head><title>Enter Message</title></head>"); res.write( '<body><form action="/message" method="POST"><input type="text" name="message"><button type-"submit">Send</button></form></body>' ); res.write("</html>"); return res.end(); } res.setHeader("Content-type", "text/html"); res.write("<html>"); res.write("<head><title>My First Page</title></head>"); res.write("<body><h1>Hello from my Node.js Server!</h1></body>"); res.write("</html>"); res.end(); }); server.listen(3000);
현재 서버 : localhost:3000
req.url 메서드를 통해 서버에 어떤 url을 요청하는지 파악한다.
현재 코드는 '/'이 url이 되면,
즉 기본 루트로 서버에 접근하면
간단한 입력 폼이 나타나게 되어 있다.
2. 요청 리디렉션
const http = require("http"); const fs = require("fs"); const server = http.createServer((req, res) => { const url = req.url; // url 값을 변수에 저장 const method = req.method; // 요청의 방법 저장 if (url === "/") { // url에 따라 다른 응답을 보내도록 조건 설정 res.write("<html>"); res.write("<head><title>Enter Message</title></head>"); res.write( '<body><form action="/message" method="POST"><input type="text" name="message"><button type-"submit">Send</button></form></body>' ); res.write("</html>"); return res.end(); } if (url === "/message" && method === "POST") { fs.writeFileSync("message.txt", "DUMMY"); //res.writeHead(302, {}); //302 경로재지정을 의미 res.statusCode = 302; res.setHeader("Location", "/"); return res.end(); } res.setHeader("Content-type", "text/html"); res.write("<html>"); res.write("<head><title>My First Page</title></head>"); res.write("<body><h1>Hello from my Node.js Server!</h1></body>"); res.write("</html>"); res.end(); }); server.listen(3000);
파일 시스템 활용을 위해 fs 모듈을 불러왔다.
버튼을 클릭하면 message 페이지로 이동하고
message 페이지에서는 현재 app과 같은 경로에 txt 파일을 만든다.
그리고 / 페이지로 리디렉션.
3. 요청을 버퍼로 받아 처리하기
const http = require("http"); const fs = require("fs"); const server = http.createServer((req, res) => { const url = req.url; // url 값을 변수에 저장 const method = req.method; // 요청의 방법 저장 if (url === "/") { // url에 따라 다른 응답을 보내도록 조건 설정 res.write("<html>"); res.write("<head><title>Enter Message</title></head>"); res.write( '<body><form action="/message" method="POST"><input type="text" name="message"><button type-"submit">Send</button></form></body>' ); res.write("</html>"); return res.end(); } if (url === "/message" && method === "POST") { const body = []; req.on("data", (chunk) => { console.log(chunk); body.push(chunk); }); req.on("end", () => { const parsedBody = Buffer.concat(body).toString(); // console.log(parsedBody); const message = parsedBody.split('='[1]); fs.writeFileSync("message.txt", message); }); //res.writeHead(302, {}); //302 경로재지정을 의미 res.statusCode = 302; res.setHeader("Location", "/"); return res.end(); } res.setHeader("Content-type", "text/html"); res.write("<html>"); res.write("<head><title>My First Page</title></head>"); res.write("<body><h1>Hello from my Node.js Server!</h1></body>"); res.write("</html>"); res.end(); }); server.listen(3000);
* 다음에 버퍼, 청크 등 노드가 데이터를 송수신하는 방식에 대해 조금 더 자세히 알아보겠다.
여기서는 버퍼를 통해 데이터를 받아와
message 파일에 저장했다.
'Node.js' 카테고리의 다른 글
Node.js] 모듈 시스템 사용하기 (1) 2023.12.04 Node.js | javascript] 이벤트 기반 코드 실행 | Event-Driven (0) 2023.12.04 Node.js] 서버의 요청 및 응답 확인하기 (1) 2023.11.30 Node.js] 서버 만들기 : http 모듈, require, listen (0) 2023.11.29 1. Node.js란 무엇인가, 설치와 간단한 실행 (0) 2023.11.21