آموزش آسان: نحوه ایجاد یک API Express برای مبتدیان
معرفی
Express یک چارچوب مینیمالیستی Node.js است. یکی از مزایای کلیدی استفاده از Express توانایی آن در ایجاد APIهای قوی و مقیاس پذیر به راحتی است. در این مقاله، میخواهم شما را راهنمایی کنم که چگونه میتوانید با استفاده از این فناوری عالی یک API ایجاد کنید.
مقداردهی اولیه پروژه
مطمئن شوید که Node.js را روی رایانه خود نصب کرده اید. سپس می توانیم به مقداردهی اولیه پروژه ادامه دهیم. برای این کار باید دستورات زیر را اجرا کنیم:
mkdir my-api # Create directory for our project
cd my-api # Navigate to the created directory
npm init -y # Initialize new project
npm install express # Install dependencies
touch server.js # Create main file
اکنون، اجازه دهید ویرایشگر کد مورد نظر خود را باز کرده و آن را تغییر دهیم package.json
فایل با تغییر scripts
بخش به این:
"scripts": {
"dev": "node --watch server.js",
"start": "node server.js"
}
در اینجا دو اسکریپت برای پروژه خود تعریف کرده ایم: dev
و start
، هر دو مسئول اجرای کد ما هستند. با این حال، dev
از حالت تماشا پشتیبانی می کند، به این معنی که با هر تغییر کد دوباره اجرا می شود. ما فقط استفاده خواهیم کرد dev
برای اهداف توسعه
کد
به عنوان مثال، یک API ساده برای یک برنامه فهرست کارها ایجاد خواهیم کرد. در ویرایشگر کد دلخواه خود، آن را باز کنید server.js
فایل و کد زیر را قرار دهید:
const express = require("express");
const port = 8080;
const app = express();
app.use(express.json());
const todos = [
{ id: 1, title: "Go grocery shopping 🛒", completed: true },
{ id: 2, title: "Do the laundry 🧺", completed: false },
];
app.listen(port, () => {
console.log(`[server]: listening on port ${port}`);
});
در کد بالا، یک سرور Express را روی پورت مقداردهی اولیه کردیم 8080
. ما با استفاده از express.json()
میانافزار برای فعال کردن محتوای JSON در بدنه درخواست و تعریف یک ذخیرهسازی از موارد کارهای ما. برای سادگی این مقاله، من از یک متغیر جاوا اسکریپت معمولی برای آن استفاده کرده ام، اما به یاد داشته باشید که برای یک برنامه آماده تولید، همیشه باید از راه حل های پایگاه داده پایدار مانند MySQL یا PostgreSQL استفاده کنید.
استخراج داده ها
برای دریافت داده از API خود، اولین نقطه پایانی خود را تعریف می کنیم و از آن استفاده می کنیم GET
روش برای آن لطفا کد زیر را در قسمت قرار دهید server.js
فایل:
app.get("/api/todos", (req, res) => {
res.status(200).json(todos);
});
در اینجا، ما اولین نقطه پایانی خود را تعریف کردیم – /api/todos
. وضعیت پاسخگویی را روی آن تنظیم می کنیم 200
، با فرض موفقیت آمیز بودن، و به صورت سریالی کارهای انجام شده در قالب یک پاسخ JSON.
برای تست کد ما، آن را اجرا کنید npm run dev
دستور دهید و برای مشاهده نتایج به http://localhost:8080/api/todos بروید.
درج داده ها
برای درج داده با استفاده از API خود، از POST
روش برای /api/todos
نقطه پایانی کد به شرح زیر است:
app.post("/api/todos", (req, res) => {
if (!req.body.title) {
res.status(400).json({ message: "Title is required" });
return;
}
const title = String(req.body.title).trim();
if (title.length < 3) {
res.status(400).json({ message: "Title must be at least 3 characters" });
return;
}
const newItem = {
id: todos.length + 1,
title,
completed: false,
};
todos.push(newItem);
res.status(201).json(newItem);
});
در ابتدا، ما برخی از اعتبارسنجی اولیه را انجام دادیم – بررسی کردیم که آیا این اعتبار وجود دارد یا خیر title
حتی در بدنه درخواست وجود دارد، و اگر نه یا کمتر از 3 کاراکتر باشد، وضعیت پاسخ را بر روی 400
، به این معنی است که درخواست نامعتبر بوده است و ما پیام مناسب را برمی گردانیم.
به نحوه استفاده ما توجه کنید return
پس از تایید ناموفق برای جلوگیری از هر گونه اجرای کد بیشتر در نقطه پایانی فعلی لازم است.
اگر اعتبارسنجی موفقیت آمیز باشد، سپس اقدام به ایجاد یک مورد جدید می کنیم و آن را به “پایگاه داده” خود فشار می دهیم. سپس وضعیت پاسخ را روی آن تنظیم می کنیم 201
، به این معنی است که ما یک مورد جدید ایجاد کرده ایم و آن را برمی گردانیم.
متأسفانه، برای آزمایش این کد، مرورگر کافی نخواهد بود. اگر از ویرایشگر VSCode استفاده می کنید، باید از ابزارهایی مانند Postman یا Thunder Client استفاده کنید.
حذف داده ها
آخرین مرحله، تعریف آن خواهد بود DELETE
روش برای /api/todos
نقطه پایانی ما از آن برای حذف موارد موجود از “پایگاه داده” استفاده خواهیم کرد.
app.delete("/api/todos/:id", (req, res) => {
const id = Number(req.params.id);
const itemIndex = todos.findIndex((todo) => todo.id === id);
if (itemIndex === -1) {
res.status(404).json({ message: `Item with id ${id} not found.` });
return;
}
const removedItem = { ...todos[itemIndex] };
todos.splice(itemIndex, 1);
res.status(200).json(removedItem);
});
برای تعریف آیتمی که میخواهیم حذف کنیم، از پارامتر مسیر استفاده کردیم (این است /:id
بخشی در نقطه پایانی). با استفاده از آن می توانیم به آن دسترسی پیدا کنیم req.params
هدف – شی. بنابراین در اینجا، ما بررسی کردیم که آیا یک مورد با ارائه شده است id
حتی وجود دارد، و اگر نه، وضعیت پاسخ را بر روی تنظیم می کنیم 404
و پیغام مناسب را برگردانید. اگر وجود داشته باشد، به سادگی آن را از حافظه خود حذف کرده و مورد حذف شده را برمی گردانیم.
این برای این مقاله خواهد بود. کد کامل را می توانید در مخزن زیر بیابید:
امیدوارم امروز لذت برده باشید و چیز جدیدی یاد گرفته باشید. اگر سوالی دارید، می توانید آنها را در بخش نظرات زیر مطرح کنید یا با من تماس بگیرید توییتر.
با تشکر برای خواندن! 👋