사고쳤어요
Node.js에서 Router를 통해 url 읽어내기 본문
URL
URL이란 Uniform Resource Locator의 약자로 인터넷 상에서 웹 페이지가 어디에 있는지 위치를 알려주는 주소이다.
Node.js에서 현재 위치한 URL이 무엇인지를 출력해보도록 하자.
// server.js
let http = require("http");
let url = require("url");
function start() {
function onRequest(request, response) {
let pathname = url.parse(request.url).pathname;
console.log("pathname: " + pathname);
response.writeHead(200, { "Content-Type": "text/html" });
response.write("Hello Node.js");
response.end();
}
http.createServer(onRequest).listen(8888);
}
exports.start = start;
Node.js는 url이라는 편리한 모듈을 제공한다.
그리고 url.parse(request.url).pathname을 통해 현재 위치한 url을 불러올 수 있다.


실제로 서버를 실행하고 url을 입력하면 그 url이 그대로 출력되는 모습을 볼 수 있다.
(/favicon.ico는 브라우저가 자동으로 favicon.ico파일을 요청하기 때문에 출력되는 기본 동작이다)
하지만 우리는 url과 관련된 작업을 server.js가 아닌 router.js에서 처리하고 싶다.
router.js를 작성하여 연결하여보자.
Router
// router.js
function route(pathname) {
console.log("pathname: " + pathname);
}
exports.route = route;
route() 함수는 pathname을 전달받아 출력하는 함수이다.
이제 router.js를 연결하여 사용해야 하는데, server.js와 연결하는 방법, 그리고 index.js와 연결하는 방법이 있을 것이다.
하지만 서버가 작동되는 구조를 생각해보면, index.js에 연결하여 server.js로 전달해주는 것이 더 좋을 것이다.
// index.js
let server = require("./server");
let router = require("./router");
server.start(router.route);
index.js에 router라는 변수를 정의하여 router.js를 연결하였다.
이후 server.js에 router의 route()함수를 전달하기 위해 server.start() 함수 내에 router.route를 추가하였다.
// server.js
let http = require("http");
let url = require("url");
function start(route) {
function onRequest(request, response) {
let pathname = url.parse(request.url).pathname;
route(pathname);
response.writeHead(200, { "Content-Type": "text/html" });
response.write("Hello Node.js");
response.end();
}
http.createServer(onRequest).listen(8888);
}
exports.start = start;
index.js에서 server.js로 route() 함수를 전달한다면, server.js에서도 route() 함수를 받을 준비가 되어야 할 것이다.
start() 함수의 파라미터에 route를 추가해준 뒤, 원하는 부분에 route() 함수를 호출한다.
'웹 풀스택' 카테고리의 다른 글
| Docker MariaDB 작업 환경 구축하기 (0) | 2025.02.05 |
|---|---|
| Node.js에서 Router를 통해 URL에 따라 다른 response 보내기 (0) | 2025.02.04 |
| Node.js 서버 모듈화 (0) | 2025.02.04 |
| Node.js 기본 웹서버 만들기 (0) | 2025.02.04 |
| Javascript와 Javascript-HTML 연결 방법, Javascript 태그 연결 방법 (0) | 2025.02.03 |