برنامه نویسی

8 اصل کلیدی برای API های آرام و مؤثر در Node.js

ساختن یک API آرام در Node.js آسان است ، اما ساخت مؤثر یکی؟ این یک چالش متفاوت است. این که آیا شما در حال تهیه یک API برای یک برنامه سازمانی هستید یا یک محصول ساده SaaS ، طراحی آن با بهترین روشها در ذهن ، عملکرد ، امنیت و قابلیت حفظ را تضمین می کند.

1. کنوانسیون های نامگذاری منابع استراحت را دنبال کنید

یک API استراحت خوب با شروع می شود نامگذاری منابع روشن و مداومبشر API شما باید استفاده کند اسم به جای افعال هنگام تعریف نقاط پایانی.

مثال بد:

POST /createUser  
GET /getUserData  
PUT /updateUserProfile  
DELETE /removeUser  
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثال خوب:

POST /users  
GET /users/{id}  
PUT /users/{id}  
DELETE /users/{id}  
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

هر منبع نمایانگر یک موجود در دنیای واقعی است (usersبا productsبا orders، و غیره) ، و روش های HTTP عملیات را تعریف می کنند.

  • بدست آوردن → داده ها را بازیابی کنید
  • پست → داده های جدید ایجاد کنید
  • قرار دادن داده های موجود را به روز کنید
  • حذف کردن → حذف داده ها

چسبیدن به این کنوانسیون ها باعث می شود API ها قابل پیش بینی و آسان تر باشند.

2. از کدهای مناسب HTTP استفاده کنید

بسیاری از API ها 200 خوب برای همه چیز ، که یک عمل بد است. کدهای وضعیت HTTP باید آنچه را که اتفاق افتاده است ارتباط برقرار کنند واضح است.

کدهای وضعیت HTTP مشترک:

  • 200 خوب → درخواست موفقیت آمیز
  • 201 ایجاد شده request درخواست پست موفقیت آمیز
  • 204 بدون محتوا request درخواست حذف موفقیت آمیز بدون هیچ بدنه پاسخ
  • 400 درخواست بد inport ورودی نامعتبر از مشتری
  • 401 غیرمجاز erain عدم موفقیت احراز هویت
  • 403 ممنوع erain عدم موفقیت مجوز
  • 404 یافت نشد → منابع وجود ندارد
  • 500 خطای سرور داخلی → مسئله طرف سرور غیر منتظره

پاسخ مثال:

{
  "error": "User not found",
  "statusCode": 404
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این باعث می شود اشکال زدایی برای توسعه دهندگان آسانتر شود و قابلیت استفاده API را بهبود بخشد.

3. احراز هویت و مجوز را اجرا کنید

امنیت است غیر قابل مذاکره در API شما نمی خواهید کاربران غیرمجاز به داده های حساس دسترسی پیدا کنند. از مکانیسم های احراز هویت و مجوز استفاده کنید به درستی

گزینه های احراز هویت:

  • JWT (Json Web Token) – ایده آل برای احراز هویت بدون تابعیت
  • OAUTH 2.0 -عالی برای ادغام های شخص ثالث
  • کلیدهای API – ساده اما امن تر

مثال: محافظت از مسیرها با JWT در Express

const jwt = require("jsonwebtoken");

const authenticateToken = (req, res, next) => {
  const token = req.header("Authorization")?.split(" ")[1];
  if (!token) return res.status(401).json({ error: "Access Denied" });

  jwt.verify(token, process.env.JWT_SECRET, (err, user) => {
    if (err) return res.status(403).json({ error: "Invalid Token" });
    req.user = user;
    next();
  });
};

// Protect routes
app.get("/dashboard", authenticateToken, (req, res) => {
  res.json({ message: "Welcome to Dashboard!" });
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در اینجا ، معتبر Middleware تضمین می کند که فقط کاربران معتبر می توانند به آن دسترسی پیدا کنند /dashboard مسیر.

4. محدودیت را برای جلوگیری از سوءاستفاده نرخ

API می تواند باشد مورد آزار توسط ربات ها ، خراشگران یا مهاجمان بی رحمانه. محدودیت نرخ مانع از درخواست های بیش از حد می شود یک کاربر/IP واحد در مدت زمان کوتاهی

با استفاده از express-rate-limit:

const rateLimit = require("express-rate-limit");

const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15 minutes
  max: 100, // Limit each IP to 100 requests per window
  message: "Too many requests, please try again later.",
});

app.use("/api/", limiter);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این تضمین می کند که کاربر نمی تواند اسپم API شما با درخواست های بیش از حد.

5. صفحه بندی مناسب برای مجموعه داده های بزرگ

هنگام برخورد با داده های بزرگ (کاربران ، محصولات ، سفارشات) ، بازگشت همه سوابق یکباره ناکارآمد است در عوض ، پیاده سازی کنید صفحه بندیبشر

مثال: API کاربران صفحه بندی شده

app.get("/users", async (req, res) => {
  const { page = 1, limit = 10 } = req.query;
  const users = await User.find()
    .skip((page - 1) * limit)
    .limit(Number(limit));

  res.json(users);
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پارامترهای پرس و جو صفحه بندی:

GET /users?page=2&limit=10
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

بازگرداندن صفحه 2 با 10 کاربر در هر صفحهبشر

6. از نسخه API استفاده کنید

API ها با گذشت زمان تکامل می یابند. اگر معرفی کنید تغییر تغییرات، مشتری های بزرگتر ممکن است شکستنبشر راه حل؟ نسخه APIبشر

روشهای نسخه API:

  1. نسخه URL (متداول ترین)


   GET /v1/users
   GET /v2/users
  

  1. نسخه سازی مبتنی بر هدر


   GET /users
   Headers: X-API-Version: v2
  

مثال در Express.js:

app.use("/v1", require("./routes/v1"));
app.use("/v2", require("./routes/v2"));
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این تضمین می کند مشتری های مسن هنوز می توانند از API بدون شکستن استفاده کنندبشر

7. CORS را برای دسترسی به دامنه متقابل فعال کنید

API ها اغلب خدمت می کنند برنامه های جلو، و بدون CORS (اشتراک منابع متقاطع)، درخواست های منشأ مختلف مسدود خواهد شد.

CORS را در Express.js فعال کنید:

const cors = require("cors");

app.use(cors({
  origin: "https://yourfrontend.com",
  methods: "GET,POST,PUT,DELETE",
  credentials: true,
}));
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این فقط تضمین می شود ریشه های معتبر می توانید با API خود تماس بگیرید.

8. رسیدگی به خطای ساختاری و معنی دار

API باید برگردد پیام های خطای را پاک کنید بنابراین توسعه دهندگان می توانند به سرعت مشکلات را اشکال بزنند.

مثال بد:

{
  "error": "Something went wrong"
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثال خوب:

{
  "error": "Invalid email format",
  "field": "email",
  "statusCode": 400
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

رسیدگی به خطای متمرکز در Express.js:

app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(err.statusCode || 500).json({
    error: err.message || "Internal Server Error",
  });
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اکنون ، همه خطاها خواهد بود با لطف اداره می شودبشر

recap سریع:

treat مناسب استراحت کنید نامگذاری منابع
→ استفاده کنید کدهای وضعیت HTTP درست
→ پیاده سازی احراز هویت و مجوز
→ جلوگیری از سوءاستفاده با محدود کردن نرخ
→ استفاده کنید صفحه بندی برای مجموعه داده های بزرگ
→ پیاده سازی نسخه API
→ فعال کردن کورس برای دسترسی متقابل
→ ارائه رسیدگی به خطای ساختاری

شما همچنین ممکن است دوست داشته باشید:

  1. 10 اشتباه رایج با کد همزمان در Node.js

  2. چرا 85 ٪ از توسعه دهندگان از Express.js استفاده می کنند

  3. اجرای استقرار صفر پایین در Node.js

  4. 10 اشتباه مدیریت حافظه مشترک در Node.js

  5. 5 تفاوت کلیدی بین ^ و ~ در Pack.json

  6. Scaling Node.js برای معماری چند مستاجر قوی

  7. 6 اشتباه رایج در طراحی دامنه محور (DDD) با Express.js

  8. 10 پیشرفت عملکرد در Node.js با استفاده از V8

  9. آیا node.js می تواند میلیون ها کاربر را اداره کند؟

  10. Express.js اسرار که توسعه دهندگان ارشد به اشتراک نمی گذارند

وبلاگ های بیشتر را از اینجا بخوانید

تجربیات خود را در نظرات به اشتراک بگذارید ، و بیایید در مورد نحوه مقابله با آنها بحث کنیم!

من را در LinkedIn دنبال کنید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا