API Architecture: Auto-Generating Interactive REST API Documentation with Swagger and OpenAPI
একটি জটিল সফটওয়্যার প্রোজেক্টে ব্যাকএন্ড এপিআই ডেভেলপ করার পর ফ্রন্টএন্ড টিম কিংবা বায়ারদের (Buyers) কাছে প্রতিটি এন্ডপয়েন্টের প্যারামিটার ও রেসপন্স স্ট্রাকচার বুঝিয়ে দেওয়া এক বিশাল ঝামেলার কাজ। পিডিএফ ফাইল বা সাধারণ টেক্সট ডক লিখে এপিআই ডকুমেন্টেশন শেয়ার করার সনাতন পদ্ধতি এখন ব্যাকডেটেড।
আধুনিক কাস্টম মডেল ও অ্যাপ্লিকেশন আর্কিটেকচারে ব্যবহৃত হয় **Swagger (OpenAPI Specification)**। এর মাধ্যমে কোডের ভেতরেই লাইভ ইন্টারঅ্যাক্টিভ ওয়েব প্যানেল অটো-জেনারেট হয়, যেখানে ক্লায়েন্টরা সরাসরি ব্রাউজার থেকেই "Try it out" বাটনে ক্লিক করে রিয়েল-টাইম এপিআই রিকোয়েস্ট টেস্ট করতে পারে।
১. নোড প্রজেক্টে Swagger ইন্টিগ্রেশন
আপনার এক্সপ্রেস (Express.js) অ্যাপ ডিরেক্টরিতে প্রয়োজনীয় কোর লাইব্রেরি দুটি ইনস্টল করে নিন:
npm install swagger-ui-express swagger-jsdoc --save
ধাপ ২: ডকুমেন্টেশন রুট ইঞ্জিন কোডিং (`app.js`)
আপনার মেইন ব্যাকএন্ড ইঞ্জিনে Swagger ডাইনামিক ইন্টারফেস মাউন্ট করার সম্পূর্ণ প্রফেশনাল মেথড কোড:
const express = require('express');
const swaggerUi = require('swagger-ui-express');
const swaggerJsdoc = require('swagger-jsdoc');
const app = express();
app.use(express.json());
// ১. ওপেনএপিআই মেটাডাটা স্কিমা কনফিগারেশন
const swaggerDefinitionOptions = {
definition: {
openapi: '3.0.0',
info: {
title: 'Ahyan Creations Core Engine REST API Gateway',
version: '1.0.4',
description: 'Centralized live synchronized infrastructure documentation endpoints.',
},
servers: [{ url: 'https://api.ahyancreations.top/v1' }],
},
apis: ['./app.js'], // যে ফাইলগুলোতে এন্ডপয়েন্ট কমেন্ট লেখা আছে
};
const swaggerSpecification = swaggerJsdoc(swaggerDefinitionOptions);
// ২. ইন্টারঅ্যাক্টিভ ড্যাশবোর্ড রুট মাউন্ট করা
app.use('/docs/api-explorer', swaggerUi.serve, swaggerUi.setup(swaggerSpecification));
/**
* @openapi
* /users/authenticate:
* post:
* summary: Request validated session token payload
* requestBody:
* required: true
* content:
* application/json:
* schema:
* type: object
* properties:
* apiKey:
* type: string
* responses:
* 200:
* description: Core sync authorization confirmed.
*/
app.post('/users/authenticate', (req, res) => {
res.status(200).json({ status: "granted", token: "session_ax92_vault" });
});
app.listen(8080, () => console.log('API Engine active on port 8080. Explore docs at /docs/api-explorer'));
কোলাবোরেশন বেনিফিট: Swagger ডকুমেন্টেশন লাইভ থাকলে আপনার বায়ার বা ক্লায়েন্টকে বারবার রিকোয়েস্ট পে-লোড ফরম্যাট বা হেডার কী হবে তা ম্যানুয়ালি চ্যাটে বা স্ক্রিনশটে বোঝাতে হবে না। তারা সরাসরি আপনার সাইটের /docs/api-explorer লিংকে গিয়েই রিয়েল ডেটা টেস্ট করে অটো-জেনারেটেড ক্লায়েন্ট কোড নিয়ে নিতে পারবে।