Web frameworkμ λνμ¬(2)
μΉ νλ μμν¬μ λν΄ νμ΅νκ³ κ³΅μ νλ κΈμ λλ€.
μ§λ κΈμμ μ°λ¦¬λ κ°λ¨ν μΉμλ²λ₯Ό μμ±νλ λ°©λ²μ λν΄ μ½λλ₯Ό μμ±νκ³ μ€μ΅μ μ§νν΄λ³΄μμ΅λλ€. νμ§λ§ κ·Έκ²λ§μΌλ‘ μΉ νλ μμν¬λ₯Ό λ체ν μ μλ€ λ§νκΈ° νλλλ€.
κ·Έλμ μ΄λ² κΈμμ μΉ νλ μμν¬μ ν΅μ¬ κΈ°λ₯ μ€ νλμΈ λΌμ°ν ꡬνμ expressjsμμ΄ κ΅¬νν΄λ³΄λλ‘ νκ² μ΅λλ€.
μ°μ λΌμ°ν μ 무μμΌκΉμ?
κ°λ¨νκ² URLκ³Ό μμ² νΈλ€λ¬λ₯Ό μ°κ²°ν΄μ£Όλ κΈ°λ₯μ μ 곡ν©λλ€. μ¦, μΉ μ ν리μΌμ΄μ μ λ€μν μλν¬μΈνΈλ₯Ό κ΄λ¦¬ν μ μμ΅λλ€.
μλν¬μΈνΈ(Endpoint)λ 무μμΌκΉμ?
μλν¬μΈνΈλ μΉ APIμμ ν΄λΌμ΄μΈνΈκ° νΉμ ν μμ²μ μννκΈ° μν΄ μ κ·Όνλ URL κ²½λ‘λ₯Ό λνλ λλ€.
μλν¬μΈνΈ μμ
GET /posts: λͺ¨λ κ²μλ¬Όμ κ°μ Έμ€λ μλν¬μΈνΈ GET /posts/{id}: νΉμ κ²μλ¬Όμ κ°μ Έμ€λ μλν¬μΈνΈ POST /posts: μλ‘μ΄ κ²μλ¬Όμ μμ±νλ μλν¬μΈνΈ PUT /posts/{id}: νΉμ κ²μλ¬Όμ μμ νλ μλν¬μΈνΈ DELETE /posts/{id}: νΉμ κ²μλ¬Όμ μμ νλ μλν¬μΈνΈ
κ·ΈλΌ λ€μ λμμμ Express μμ΄ Node.jsλ§μ μ¬μ©νμ¬ λΌμ°ν μ ꡬνν΄λ³΄κ² μ΅λλ€. μ ν° HTTP λͺ¨λμ μ¬μ©ν μμ μ λλ€. Node.jsμλ κΈ°λ³Έμ μΌλ‘ λ΄μ₯λ HTTP λͺ¨λμ΄ μμ΅λλ€. μ΄λ₯Ό μ¬μ©νμ¬ μΉ μλ²λ₯Ό λ§λ€κ³ λΌμ°ν μ ꡬνν΄λ³΄κ² μ΅λλ€.
μμ
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}/`);
});
μμ μ½λλ₯Ό κ°λ¨νκ² μ€λͺ νμλ©΄ λ¨μν HTTP μλ²λ₯Ό μμ±νκ³ , μμ²μ λ°λΌ λΌμ°ν μ ꡬνν©λλ€. κ²½λ‘μ λ°λ₯Έ μλ΅μ λ°μ΅λλ€. μ§μ ν κ²½λ‘ μΈμ μμ²μ 404 Not Found μλ΅μ 보λ λλ€.
μΆκ°
μμ²μ HTTP μλ΅ ν€λμ Content-Typeκ³Ό κ°μ νλλ₯Ό μ€μ νμ§ μμΌλ©΄ μ΄λ»κ² λλμ§ κΆκΈνμ¬ μμ보μμ΅λλ€.
μλ΅ ν€λμ νλλ₯Ό μ€μ νμ§ μμ μ λ°μν μ μλ λ¬Έμ
ν΄λΌμ΄μΈνΈλ μλ²λ‘λΆν° λ°μ μλ΅μ λ΄μ©μ λν μ 보λ₯Ό μ μ μκ² λ©λλ€. μ 보λ₯Ό μ μ μλ€λ κ²μ ν΄λΌμ΄μΈνΈκ° λ°μ λ°μ΄ν°λ₯Ό μ¬λ°λ₯΄κ² ν΄μνκ³ μ²λ¦¬νλ λ°μ μν₯μ μ€ μ μμ΅λλ€.
μμ
μλ²κ° Content-Typeμ ν€λμ μ€μ νμ§ μμ μ, μΉ λΈλΌμ°μ λ ν΄λΉ μλ΅μ μΌλ° ν μ€νΈλ‘ κ°μ£Όν μ μμ΅λλ€. κ²°κ³Όμ μΌλ‘ HTML νκ·Έλ ꡬ쑰λ₯Ό μ¬λ°λ₯΄κ² ν΄μ νμ§ λͺ»νκ³ μΌλ° ν μ€νΈλ‘ νμνκ² λ μ μμ΅λλ€.
λ€μ κΈμμ μμ μ½λλ₯Ό μΉ νλ μμν¬μΈ Expressλ₯Ό ν΅ν΄ μ¬μ©ν μμμ μΉ νλ μμν¬ μ¬μ©μ μ₯λ¨μ μ λν΄ λ€λ£¨λλ‘ νκ² μ΅λλ€.
μ°Έκ³ ν λ§ν¬