
Node.jsλ‘ API μλ²λ₯Ό κ°λ°νλ€ λ³΄λ©΄ λꡬλ ν λ²μ―€ Express.jsλ‘ βHello Worldβλ₯Ό μ°μ΄λ³Έ κ²½νμ΄ μμ κ²λλ€. νμ§λ§ μ€λ¬΄μμλ λ¨μν μλ²λ₯Ό λμ°λ κ²λ³΄λ€ ꡬ쑰ν, νμ₯μ±, μ μ§λ³΄μμ±μ΄ ν¨μ¬ μ€μν©λλ€.
μ΄λ² κΈμμλ κ°λ¨ν Todo API μμλ₯Ό λ°νμΌλ‘, μ€λ¬΄μμ μμ£Ό λΆλͺνλ λ¬Έμ μ κ·Έ ν΄κ²° νμ 곡μ νκ² μ΅λλ€.
μ΄λ³΄ λ¨κ³μμλ λͺ¨λ μ½λλ₯Ό index.jsμ λͺ°μ λ£κ³€ ν©λλ€. νμ§λ§ κ·λͺ¨κ° 컀μ§λ©΄ μ μ§λ³΄μκ° νλ€μ΄μ§λλ€.
π μΆμ²νλ μ΅μ ꡬ쑰λ λ€μκ³Ό κ°μ΅λλ€.
/src
/routes
todoRoutes.js
/controllers
todoController.js
index.js
μ€λ¬΄μμλ μλ 리μμ€λ₯Ό μμ²νκ±°λ, μλͺ»λ μμ² λ°λκ° λ€μ΄μ€λ κ²½μ°κ° λ§μ΅λλ€.
// μμΈ μ²λ¦¬ μλ κ²½μ° β μλ² λ€μ΄ κ°λ₯
app.post("/todos", (req, res) => {
const { task } = req.body;
if (!task) return res.status(400).json({ message: "Task is required" });
});
π νμ μμ² κ° κ²μ¦(validation)μ νκ³ , μλ¬ λ―Έλ€μ¨μ΄λ₯Ό λ§λ€μ΄ κ³΅ν΅ μ²λ¦¬νλ κ² μ’μ΅λλ€.
μ€μ΅μμλ λ©λͺ¨λ¦¬μ λ°μ΄ν°λ₯Ό μ μ₯νμ§λ§, μ€λ¬΄μμλ DB μ°κ²°μ΄ νμμ
λλ€.
Node.jsμμ κ°μ₯ λ§μ΄ μ°λ DBλ MongoDB(Mongoose), PostgreSQL(Sequelize/Prisma) μ
λλ€.
μ λ DB URL, API Key λ±μ μ½λμ μ§μ μ°μ§ λ§μΈμ.
.env νμΌμ λκ³ dotenv ν¨ν€μ§λ₯Ό μ¬μ©νλ©΄ μμ νκ² κ΄λ¦¬ν μ μμ΅λλ€.
require("dotenv").config();
const DB_URL = process.env.DB_URL;
Node.jsμ Expressλ‘ API μλ²λ₯Ό λ§λλ 건 λ¨μν©λλ€. νμ§λ§ μ€λ¬΄μμλ ꡬ쑰ν, 보μ, νμ₯μ±μ΄ μ°¨μ΄λ₯Ό λ§λλλ€.
μ²μμλ κ°λ¨ν μμ λ₯Ό λ§λ€μ΄λ³΄κ³ , μ μ°¨ DB μ°κ²° β μΈμ¦ β λ°°ν¬κΉμ§ κ²½νμ λν λκ°λ€λ©΄ λΉ λ₯΄κ² μ±μ₯ν μ μμ κ²λλ€. π