Web frameworkμ λνμ¬(3)
μΉ νλ μμν¬μ λν΄ νμ΅νκ³ κ³΅μ νλ κΈμ λλ€.
μ§λ κΈμμλ μ½λλ₯Ό Node.JSμμ μ 곡νλ HTTPκΈ°λ₯μ ν΅ν΄ μΉμλ²λ₯Ό λ€λ€μ΅λλ€. μΉ νλ μμν¬κ° μμ΄ κ΅¬ννλ€λ©΄ μ΄λ»κ² ꡬνν μ§ μκΈ° μν΄μ μ λλ€. μ΄λ²μ μ΄μ κΈκ³Ό λμΌν κΈ°λ₯μ νλλ‘ Expressλ‘ κ΅¬νν μμλ‘ μΉ νλ μμν¬μ μ μ©ν¨κ³Ό νλ‘μ νΈμ μΉ νλ μμν¬ μ¬μ©μ μ₯λ¨μ μ λν΄ λ€λ£¨λλ‘ νκ² μ΅λλ€.
λ¨Όμ μ΄μ μ μμ±ν μ½λλ₯Ό κ°μ Έμ€κ² μ΅λλ€.
μ΄μ μ μμ±ν μ½λ
const http = require("http");
const server = http.createServer((req, res) => {
const { method, url } = req;
if (method === "GET" && url === "/") {
res.statusCode = 200;
// HTTP μλ΅ ν€λλ μΉ μλ²κ° ν΄λΌμ΄μΈνΈμκ² λ³΄λ΄λ λ©νλ°μ΄ν°λ‘, μλ΅μ μμ±κ³Ό λ΄μ©μ λν μ 보λ₯Ό λ΄κ³ μμ΅λλ€.
res.setHeader("Content-Type", "text/plain");
res.end("Hello, World!");
} else if (method === "GET" && url === "/about") {
res.statusCode = 200;
res.setHeader("Content-Type", "text/plain");
res.end("About page");
} else {
res.statusCode = 404;
res.setHeader("Content-Type", "text/plain");
res.end("404 Not Found");
}
});
const port = 3000;
server.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
μ°λ¦¬λ μ΄μ κΈμμ μΉμλ²λ₯Ό μμ±νκ³ , Node.jsμμ κΈ°λ³Έμ μΌλ‘ μ 곡νλ HTTP λͺ¨λλ‘ λΌμ°ν κΈ°λ₯μ ꡬννμ΅λλ€.
μ°Έκ³
λͺ¨λμ΄λ? μ¬μ¬μ© κ°λ₯ν μ½λ μ‘°κ°μ λ΄κ³ μλ λ 립μ μΈ λ¨μμ λλ€. λͺ¨λμ λ³μ, ν¨μ, ν΄λμ€, κ°μ²΄ λ±μ λ΄λ³΄λ΄κ±°λ κ°μ Έμ¬ μ μμΌλ©°, μ½λμ μ¬μ¬μ©μ±κ³Ό λͺ¨λνλ₯Ό κ°λ₯νκ² ν©λλ€.
λ€μ λμμ μ΄μ λμΌν κΈ°λ₯μ μννλ expressλ₯Ό νμ©νμ¬ μ½λλ₯Ό μμ±ν΄λ³΄κ² μ΅λλ€.
expressλ₯Ό νμ©νμ¬ μ½λ μμ
const express = require("express");
const app = express();
const port = 3000;
app.get("/", (req, res) => {
res.send("Hello, World!");
});
app.get("/about", (req, res) => {
res.send("About page");
});
app.use((req, res) => {
res.status(404).send("404 Not Found");
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
μμ μμ μ½λλ λμΌνκ² λΌμ°ν μ ꡬνν©λλ€. λ€λ§ get()ν¨μλ₯Ό μ¬μ©νμ¬ κ²½λ‘μ λν GET μμ²μ μ²λ¦¬νκ³ , μλ΅μ λ°νν©λλ€. λν use()ν¨μλ₯Ό μ¬μ©ν΄ λͺ¨λ κ²½λ‘μ λν μ²λ¦¬λ₯Ό ν©λλ€. μμμ μ μν κ²½λ‘λ€κ³Ό μΌμΉνμ§ μλ λͺ¨λ μμ²μ μ²λ¦¬νλ©° μλ΅μ λ°νν©λλ€.
μ½λλ₯Ό λΉκ΅ν΄λ³΄λ©΄ μκ² μ§λ§ ν¨μ¬ κ°λ μ±μ΄ μ’μΌλ©°, μ μ μ½λλ‘ λμ λ²μ©μ±μΌλ‘ 컀μ€ν μ΄ κ°λ₯ν©λλ€.
κ·ΈλΌ μ΄μ κΆκΈν©λλ€. μΉ νλ μμν¬λ₯Ό νλ‘μ νΈμ λμ νλ©΄ μ₯μ λ§ μμ κ² κ°μλ° λ¨μ μ λκ° μμμ§ λ§μ λλ€. κ·Έλμ μμ보μμ΅λλ€.
μΉ νλ μμν¬λ₯Ό νλ‘μ νΈμ λμ ν μ κ³ λ €ν μ
μ£Όμ: Expressμ κ΄μ μμ μμ보μμ΅λλ€.
λμ μ₯μ
- κ°νΈν λΌμ°ν : Expressλ λΌμ°ν μ μ€μ νλ λ° λ§€μ° νΈλ¦¬ν κΈ°λ₯μ μ 곡ν©λλ€. URL κ²½λ‘μ HTTP λ©μλλ₯Ό κΈ°λ°μΌλ‘ λΌμ°ν μ μ€μ νκ³ μ²λ¦¬ν μ μμΌλ©°, λ€μν λΌμ°ν κΈ°λ₯μ μ 곡νμ¬ κ°λ°μκ° κ°λ¨νκ² μλν¬μΈνΈλ₯Ό κ΄λ¦¬ν μ μμ΅λλ€.
- λ€μν λ―Έλ€μ¨μ΄: Expressλ λ€μν λ―Έλ€μ¨μ΄λ₯Ό μ§μνμ¬ μμ²κ³Ό μλ΅μ λ³ννκ³ μ²λ¦¬νλ μμ μ μ½κ² μνν μ μμ΅λλ€. λ‘κΉ , μΈμ¦, μΈμ κ΄λ¦¬, μλ¬ μ²λ¦¬ λ±μ μμ μ νΈλ¦¬νκ² μ²λ¦¬ν μ μμ΅λλ€.
- μ μ°ν ν νλ¦Ώ μμ§: Expressλ λ€μν ν νλ¦Ώ μμ§μ μ§μνμ¬ λμ μΈ HTML νμ΄μ§λ₯Ό μμ±ν μ μμ΅λλ€. ν νλ¦Ώ μμ§μ μ¬μ©νλ©΄ λ°μ΄ν°μ ν νλ¦Ώμ κ²°ν©νμ¬ ν΄λΌμ΄μΈνΈμκ² λμ μΈ μ»¨ν μΈ λ₯Ό μ 곡ν μ μμ΅λλ€.
- νμ₯μ±: Expressλ μ μ°ν ꡬ쑰λ₯Ό κ°μ§κ³ μμ΄ νμν κ²½μ° λ―Έλ€μ¨μ΄, λΌμ°ν°, ν νλ¦Ώ μμ§ λ±μ μΆκ°νκ±°λ μ¬μ©μ μ μν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ κ°λ°μλ μμ μ νλ‘μ νΈμ λ§κ² κΈ°λ₯μ νμ₯νκ³ μ»€μ€ν°λ§μ΄μ§ν μ μμ΅λλ€.
λμ λ¨μ
- μΆκ°μ μΈ νμ΅ κ³‘μ : Expressλ μΌλΆ κΈ°λ₯μ μ 곡νλ μλμ μΌλ‘ μμ νλ μμν¬μ λλ€. λ°λΌμ μ²μ μ¬μ©νλ κ°λ°μλ€μκ²λ μ μμ΄ νμν μ μμ΅λλ€. Expressμ λ¬Έλ²κ³Ό ꡬ쑰λ₯Ό μ΄ν΄νκ³ μ¬μ©νλ λ°μλ μΆκ°μ μΈ νμ΅μ΄ νμν μ μμ΅λλ€.
- λ무 λ§μ μ μ°μ±: Expressλ λ§μ μ μ°μ±μ μ 곡νκΈ° λλ¬Έμ κ°λ°μκ° νλ‘μ νΈλ₯Ό ꡬμ±νκ³ κ΅¬ννλ λ° μμ λκ° ν½λλ€. μ΄λ λͺ νν ꡬ쑰 λ° κ°μ΄λλΌμΈμ΄ μμ κ²½μ° μ½λμ μΌκ΄μ±μ μ μ§νκΈ° μ΄λ ΅κ² λ§λ€ μ μμ΅λλ€.
λ€μ κΈμμ μΉ νλ μμν¬μ ν΅μ¬ κΈ°λ₯ μ€ λ―Έλ€μ¨μ΄μ λνμ¬ λ€λ£¨λλ‘ νκ² μ΅λλ€.