การสร้าง API Gateway โดยใช้ Node.js กับ Express ไลบรารีและการบูรณาการ Swagger สำหรับเอกสารประกอบ API สามารถทำได้ดังนี้:
ขั้นตอนที่ 1: ตั้งค่าโครงการและติดตั้งไลบรารี
- สร้างไดเรกทอรีใหม่สำหรับโครงการของคุณ
- เปิด Command Prompt หรือ Terminal และนำทางไปยังไดเรกทอรีโครงการ:
cd path_to_directory
. - เริ่มต้นแพ็คเกจ npm:
npm init -y
. - ติดตั้งไลบรารีที่จำเป็น:.
npm install express ocelot swagger-ui-express
ขั้นตอนที่ 2: กำหนดค่า Express และ Ocelot
สร้างไฟล์ที่มีชื่ออยู่ app.js
ในไดเร็กทอรีโปรเจ็กต์และเปิดเพื่อกำหนดค่า Express:
const express = require('express');
const app = express();
const port = 3000;
// Define routes here
app.listen(port,() => {
console.log(`API Gateway is running at http://localhost:${port}`);
});
สร้างไฟล์การกำหนดค่าที่มีชื่อ ocelot-config.json
เพื่อกำหนดเส้นทางคำขอของคุณ:
{
"Routes": [
{
"DownstreamPathTemplate": "/service1/{everything}",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 5001
}
],
"UpstreamPathTemplate": "/api/service1/{everything}",
"UpstreamHttpMethod": [ "GET", "POST", "PUT", "DELETE" ]
}
// Add other routes here
]
}
ขั้นตอนที่ 3: บูรณาการ Swagger
ใน app.js
ไฟล์ ให้เพิ่มโค้ดต่อไปนี้เพื่อรวม Swagger:
const swaggerUi = require('swagger-ui-express');
const swaggerDocument = require('./swagger.json'); // Create a swagger.json file
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
สร้างไฟล์ที่มีชื่อ swagger.json
ในไดเร็กทอรีโครงการและกำหนดข้อมูลเอกสารประกอบ API:
{
"swagger": "2.0",
"info": {
"title": "API Gateway",
"version": "1.0.0"
},
"paths": {
"/api/service1/{everything}": {
"get": {
"summary": "Get data from Service 1",
"responses": {
"200": {
"description": "Successful response"
}
}
}
}
// Add definitions for other APIs here
}
}
ขั้นตอนที่ 4: เรียกใช้โครงการ
เปิด Command Prompt หรือ Terminal และนำทางไปยังไดเร็กทอรีโปรเจ็กต์
รันโปรเจ็กต์ด้วยคำสั่ง: node app.js
.
ขั้นตอนที่ 5: เข้าถึง Swagger UI
เข้าถึง Swagger UI ตามที่อยู่: http://localhost:3000/api-docs
.
โปรดทราบว่านี่เป็นตัวอย่างง่ายๆ ของวิธีการปรับใช้ API Gateway และบูรณาการ Swagger โดยใช้ Node.js ในทางปฏิบัติ คุณควรพิจารณาประเด็นต่างๆ เช่น ความปลอดภัย การกำหนดเวอร์ชัน การกำหนดค่าแบบกำหนดเอง และข้อควรพิจารณาอื่นๆ