본 게시물은 [Node.js 백엔드 개발자 되기 ]도서를 보고 작성되었습니다.
URL의 pathname 에 있는 정보를 활용하는 라우터를 만들어보자!
const http = require("http");
const url = require("url"); // url 모듈 로딩
http.createServer((req, res) => {
const path = url.parse(req.url, true).pathname; // 패스명 할당
res.setHeader("Content-Type", "text/html");
if (path === "/user") { // user 결과값 설정
res.end("[user] name : juhui , age : 25")
} else if (path === "/feed") { // feed 결과값 설정
res.end(`
<ul>
<li>picture1</li>
<li>picture2</li>
<li>picture3</li>
</ul>`);
} else {
res.statusCode = 404;
res.end("404 page not found")
}
})
.listen("3000", () => console.log(
"라우터 만들어보자!"
))
url 모듈을 불러와서 path에 대한 정보를 할당해준다
이후 if 문으로 적당히 구별하면 간단한 라우팅 완성이다
위는 요청에 대한 응답을 createServer()안에서 직접 컨트롤 하고 있다.
이는 createServer()안의 콜백 함수에 모든 코드를 다 추가해야 함으로 별로 좋지 않음
따라서 리팩터링해보면 다음과 같다.
const http = require("http");
const url = require("url"); // url 모듈 로딩
http.createServer((req, res) => {
const path = url.parse(req.url, true).pathname; // 패스명 할당
res.setHeader("Content-Type", "text/html");
if (path === "/user") { // user 결과값 설정
user(req, res)
} else if (path === "/feed") { // feed 결과값 설정
feed(req, res)
} else {
notFound(req, res)
}
})
.listen("3000", () => console.log(
"라우터 만들어보자!"
))
const user = (req, res) => {
res.end("[user] name : juhui , age : 25")
}
const feed = (req, res) => {
res.end(`
<ul>
<li>picture1</li>
<li>picture2</li>
<li>picture3</li>
</ul>`)
}
const notFound = (req, res) => {
res.statusCode = 404;
res.end("404 page not found")
}
query에 담긴 정보를 활용해보자
const user = (req, res) => {
const userInfo = url.parse(req.url, true).query
res.end(`[user] name : ${userInfo.name} , age : ${userInfo.age}`)
}
라우터가 매우매우매우 커졌을 때 map 자료구조를 사용하면 편해진다!
...
http.createServer((req, res) => {
const path = url.parse(req.url, true).pathname; // 패스명 할당
res.setHeader("Content-Type", "text/html");
if (path in urlMap) {
urlMap[path](req, res)
}
else {
notFound(req, res)
}
})
.listen("3000", () => console.log(
"라우터 만들어보자!"
))
...
const urlMap = {
"/": (req, res) => res.end("Home"),
"/user": user,
"/feed": feed
}
urlMap이 가장 하단에 있는 이유는 user와 feed 함수보다 위에 있으면 에러가 나기 때문이다
const로 선언한 변수들은 초기화 전에 읽을 수 없어서 에러가 남!!
[Node.js] Express로 간단한 API 서버 만들어보기 (1) | 2024.07.22 |
---|---|
[Node.js] Node.js 입문!! (1) | 2024.07.12 |