Api نویسی با Nodejs
موضوعهایی که در ادامه مقاله به آنها میپردازیم، عبارتند از:
- REST API چیست؟
- اصول REST
- ساخت REST API با Node.js
سبک معماری REST به استفاده کمتر از پهنای باند کمک میکند و درنهایت باعث میشود برنامه برای اینترنت مناسبتر باشد. این سبک معماری را اغلب به عنوان زبان اینترنت میشناسند.
توابع اصلی مورد استفاده در تمام معماریهای REST، به شرح زیر است:
- GET: دسترسی read-only به داده را فراهم میکند.
- PUT: داده جدیدی ایجاد میکند.
- DELETE: داده را حذف میکند.
- POST: داده موجود را بهروزرسانی یا داده جدیدی ایجاد میکند.
اصول REST
Client-Server: یک رابط است که کاربران را از سرورها جدا میکند. این تفکیک به بهبود استفاده از رابطهای کاربری کراسپلتفرم و افزایش مقیاسپذیری اجزای سرور کمک میکند.
- شناسایی منابع
- دستکاری منابع با استفاده از representations
- پیامهای self-descriptive
- hypermedia به عنوان موتور state برنامه
در اینجا با استفاده از Node.js و Express.js یک برنامه CRUD REST برای مدیریت کتابخانه ایجاد خواهیم کرد. برای ساخت برنامه میبایست موارد زیر را در پروژه و سیستم خود نصب داشته باشید:
ابتدا باید مسیر پروژه خود را ایجاد کنید. بعد خط فرمان را بازکرده و به مسیر پروژهتان بروید. با استفاده از دستور زیر کار را آغاز میکنیم:
npm init
در اینجا میتوانید فایل اصلی پروژه خود را به همراه چند مورد دیگر وارد کنید. برای این مثال از script.js به عنوان فایل اصلی پروژه استفاده خواهیم کرد. سپس با استفاده از دستور زیر میتوانید Express.js را نصب کنید:
npm i express
دستور زیر نیز joi را نصب میکند:
npm i joi
سرانجام پکیجی با نام nodemon را میتوانید برای مانیتورینگ پروژهتان نصب کنید. با استفاده از nodemon دیگر مجبور نیستید که پس ایجاد تغییرها، سرور Node.js را مجدد راهاندازی کنید. این پکیج تغییرها را شناسایی کرده و سرور را برای شما مجددا راهاندازی میکند. با استفاده از دستور زیر به کمک npm میتوانید پکیج nodemon را نصب کنید.
npm i -g nodemon
{
“name”: “restful-api”,
“version”: “1.0.0”,
“description”: “”,
“main”: “script.js”,
“scripts”: {
“test”: “nodemon script.js”
},
“author”: “”,
“license”: “ISC”,
“dependencies”: {
“express”: “^4.17.1”,
“joi”: “^17.2.1”
}
}
فایل script.js:
const express = require(‘express’);
const Joi = require(‘joi’); //used for validation
const app = express();
app.use(express.json());
const books = [
{ title: ‘Harry Potter’, id: 1 },
{ title: ‘Twilight’, id: 2 },
{ title: ‘Lorien Legacies’, id: 3 }
]
//READ Request Handlers
app.get(‘/’, (req, res) => {
res.send(‘Welcome to Edurekas REST API with Node.js Tutorial!!’);
});
app.get(‘/api/books’, (req, res) => {
res.send(books);
});
app.get(‘/api/books/:id’, (req, res) => {
const book = books.find(c => c.id === parseInt(req.params.id));
if (!book) res.status(404).send(”);
res.send(book);
});
//CREATE Request Handler
app.post(‘/api/books’, (req, res) => {
const { error } = req.body;
if (error) {
res.status(400).send(error.details[0].message)
return;
}
const book = {
id: books.length + 1,
title: req.body.title
};
books.push(book);
res.send(book);
});
//UPDATE Request Handler
app.put(‘/api/books/:id’, (req, res) => {
const book = books.find(c => c.id === parseInt(req.params.id));
if (!book) res.status(404).send(‘
Not Found!!
‘);
const { error } = req.body;
if (error) {
res.status(400).send(error.details[0].message);
return;
}
book.title = req.body.title;
res.send(book);
});
//DELETE Request Handler
app.delete(‘/api/books/:id’, (req, res) => {
const book = books.find(c => c.id === parseInt(req.params.id));
if (!book) res.status(404).send(‘
Not Found!!
‘);
const index = books.indexOf(book);
books.splice(index, 1);
res.send(book);
});
//PORT ENVIRONMENT VARIABLE
const port = process.env.PORT || 8080;
app.listen(port, () => console.log(`Listening on port ${port}..`));
اکنون باید کدهایی که نوشتهایم را آزمایش کرده و از صحت کارکرد آن مطمئن شویم. برای اجرای سروری که توسط Express.js ساختهایم، از دستور زیر استفاده خواهیم کرد.
npm test
سپس میتوانید در قسمت متن، عنوان کتاب خود را همانطور که نشان داده شده تایپ کنید و Send را فشار دهید.
در پاسخ به این درخواست، شناسه آیدی با عنوان جدید به شما نشان داده خواهد شد.
بیایید در پایان با متد DELETE درخواستی برای حذف رکورد موجود ارسال کنیم. برای این کار از منوی کشویی متد DELETE را انتخاب و URI را همراه با شناسه کتابی که میخواهید حذف شود تایپ کرده و درنهایت Enter را فشار دهید. اگر موفقیت آمیز بود، جزئیات کاملی از کتابی که حذف کردهاید را مشاهده خواهید کرد.
اکنون برای دریافت لیست نهایی کتابهایمان، درخواستی را با متد GET به سرور ارسال میکنیم.
همانطور که در تصویر بالا میبینید، متن پاسخ شامل سه کتاب است که شناسه شماره ۳ در میان آنها وجود ندارد، زیرا قبلا توسط متد DELETE آن را حذف کردهایم. برای مشاهده مقالات مرتبط به Node.js میتوانید را مشاهده کنید.
API نویسی با Node.js امروزه یکی از مهمترین مهارتهایی است که برای توسعه دهندگان وب ضروری است. Node.js به عنوان یک پلتفرم مبتنی بر جاوااسکریپت، امکان ایجاد سرورهای وب سریع و مقیاسپذیر را فراهم میکند که بسیاری از شرکتها و استارتاپها از آن استفاده میکنند. با استفاده از Express.js، یک فریمورک محبوب برای Node.js، توسعهدهندگان میتوانند به سرعت و به راحتی APIهای قدرتمندی را پیادهسازی کنند و با استفاده از middlewareها و ابزارهای دیگر، امنیت و عملکرد این APIها را بهبود بخشند.
مجتمع فنی تهران نیز به عنوان یک مرکز معتبر آموزشی در ایران، دورههای آموزش Nodejs را برگزار میکند. این دورهها شامل آموزشهای عملی و عمیق در خصوص نحوه استفاده از Node.js برای توسعه APIهای مدرن و کاربردی میباشند. دانشجویان و حرفهایهای این دورهها، با بهرهگیری از بهترین شیوهها و استانداردهای بینالمللی، مهارتهای لازم برای ایجاد و مدیریت APIهای پیچیده و مطابق با نیازهای صنعتی را درک و فرا میگیرند.