توليد Swagger/OpenAPI لجافا سكريبت (Node.js) — الأدوات والمكتبات

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

توليد Swagger/OpenAPI لجافا سكريبت (Node.js)

\n\n

عند تطوير REST API على Node.js، إحدى المهام الأساسية هي إنشاء توثيق واضح ومُحدّث. أصبح Swagger (الآن OpenAPI) المعيار الفعلي لوصف API. في هذه المقالة، سنستعرض الأدوات الرئيسية للتوليد التلقائي لمواصفات OpenAPI في مشاريع جافا سكريبت (Node.js).

\n\n

ما هو OpenAPI ولماذا يتم توليده؟

\n

OpenAPI هي مواصفة لوصف RESTful API بتنسيق JSON أو YAML. تتيح ما يلي:

\n
    \n
  • إنشاء توثيق تفاعلي تلقائيًا (Swagger UI)
  • \n
  • توليد حزم SDK للعملاء بلغات مختلفة
  • \n
  • التحقق من صحة الطلبات والاستجابات
  • \n
  • تبسيط التكامل بين الفرق
  • \n
\n

كتابة المواصفات يدويًا هي عملية شاقة وسرعان ما تصبح قديمة. لذلك، تم تطوير أدوات لـ Node.js تقوم بتوليد OpenAPI من الكود.

\n\n

الأدوات الرئيسية لتوليد OpenAPI في Node.js

\n\n

1. swagger-jsdoc

\n

المكتبة الأكثر شيوعًا، والتي تقوم بتحليل تعليقات JSDoc في الكود وتحويلها إلى مواصفات OpenAPI. يتم تثبيتها عبر npm:

\n
npm install swagger-jsdoc swagger-ui-express
\n\n

مثال على الاستخدام مع Express:

\n
const swaggerJsdoc = require('swagger-jsdoc');\nconst swaggerUi = require('swagger-ui-express');\nconst express = require('express');\nconst app = express();\n\nconst options = {\n  definition: {\n    openapi: '3.0.0',\n    info: {\n      title: 'API الخاص بي',\n      version: '1.0.0',\n      description: 'مثال API مع توليد التوثيق'\n    },\n    servers: [\n      { url: 'http://localhost:3000' }\n    ]\n  },\n  apis: ['./routes/*.js'] // المسار إلى الملفات التي تحتوي على التعليقات التوضيحية\n};\n\nconst swaggerSpec = swaggerJsdoc(options);\napp.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec));\n\n// مثال على مسار مع تعليق توضيحي\n/**\n * @openapi\n * /users:\n *   get:\n *     summary: الحصول على قائمة المستخدمين\n *     tags: [Users]\n *     responses:\n *       200:\n *         description: استجابة ناجحة\n *         content:\n *           application/json:\n *             schema:\n *               type: array\n *               items:\n *                 $ref: '#/components/schemas/User'\n */\napp.get('/users', (req, res) => {\n  res.json([{ id: 1, name: 'إيفان' }]);\n});\n\napp.listen(3000);
\n\n

2. swagger-autogen

\n

بديل أكثر حداثة، يقوم بتوليد المواصفات بناءً على التعليقات التوضيحية ويحدد أنواع البيانات تلقائيًا. التثبيت:

\n
npm install swagger-autogen
\n\n

مثال على سكريبت التوليد:

\n
const swaggerAutogen = require('swagger-autogen')();\n\nconst doc = {\n  info: {\n    title: 'API الخاص بي',\n    description: 'وصف API'\n  },\n  host: 'localhost:3000',\n  schemes: ['http']\n};\n\nconst outputFile = './swagger-output.json';\nconst endpointsFiles = ['./app.js']; // الملف الرئيسي مع المسارات\n\nswaggerAutogen(outputFile, endpointsFiles, doc).then(() => {\n  require('./app.js'); // تشغيل الخادم بعد التوليد\n});
\n\n

في المسارات، يكفي إضافة تعليق:

\n
// #swagger.tags = ['Users']\n// #swagger.description = 'نقطة نهاية للحصول على المستخدمين'\napp.get('/users', (req, res) => {\n  // #swagger.responses[200] = { description: 'قائمة المستخدمين' }\n  res.json([{ id: 1, name: 'آنا' }]);\n});
\n\n

3. express-oas-generator

\n

مكتبة تعترض الطلبات وتقوم ببناء مواصفات OpenAPI تلقائيًا بناءً على البيانات الفعلية. مناسبة للنماذج الأولية:

\n
npm install express-oas-generator
\n\n
const express = require('express');\nconst expressOasGenerator = require('express-oas-generator');\nconst app = express();\n\nexpressOasGenerator.init(app, {}); // التهيئة\n\napp.get('/products', (req, res) => {\n  res.json                    

توصيات