دوره های آموزشی سایت دانشجویار

آموزش ساخت API با استفاده از Node.js در MYSQL

Loading...
API با استفاده از Node.js

آموزش ساخت API با استفاده از Node.js در MYSQL ، در این آموزش به این موضوع پرداختیم و میخواهیم از زبان نویسنده این آموزش را پیش بگیریم و امیدوارم استفاده کنید.

آیا میدانید ایجاد RESTful API به وسیله Express Templateو node.js از آماده کردن چای یا قهوه آسانتر است؟ بنابراین، در این آموزش، چگونگی ایجاد یک RESTful API به وسیله node.js با پایگاه داده MySQL خواهیم دید.

از این مقاله، یک سری آموزشی را شروع می کنم با موضوع ایجاد اپلیکیشن های To-Do در Angular 2 و استفاده از node.js برای ظاهر برنامه. این قسمت اول از این مجموعه است. با اجرای عملیاتCRUD (ایجاد، خواندن، به روز رسانی، حذف( در node.js. شروع خواهیم کرد. API مان درخواست های GET، POST،PUT وDELETE را خواهد پذیرفت.

قبل از شروع و ایجاد API  در Node.js، برای راه اندازی محیط، مراحل زیر را انجام دهید. همچنین نیاز به نصب MySQL Server  به صورت محلی و یا بر روی یک ماشین از راه دور خواهید داشت . به راحتی و با استفاده از XAMPP یا WAMP سرور را نصب کنید.

راه اندازی محیط

cmd> npm install express -generator -g

API با استفاده از Node.js

  • نصب Express Template از node.js

API با استفاده از Node.js

در این مثال، از express template برای node.js. استفاده می کنیم. کد بالا یک نمونه پروژه آماده Node.js. ایجاد می کند.

API با استفاده از Node.js

  • نصب وابستگی های(dependency ) لازم برای MySQL


cmd> npm install mysql –save

چون پایگاه داده مان MySQL است پس باید وابستگی لازم برای MySQL را نصب کنیم با نوشتن دستور بالا، این وابستگی را به فایلpackage.json اضافه می کنیم.

API با استفاده از Node.js

  • نصب Cors

cmd> npm install cors –save
همانطور که می دانیم برای ایجاد API ، (cross -origin resource sharing )CORS اهمیت ویژه ای دارد، کد بالا وابستگی مربوط به CORS را در فایل package.json نصب خواهد کرد.

API با استفاده از Node.js

  • نصب همهی وابستگی package.json


cmd> npm install

API با استفاده از Node.js

تنظیمات جدول در mysql


for table  
CREATE TABLE IF NOT EXISTS `task` (`Id`  
    varchar(50) NOT NULL, `Title`  
    varchar(500) DEFAULT NULL, `Status`  
    varchar(100) DEFAULT NULL, PRIMARY KEY(`Id`)) ENGINE = InnoDB DEFAULT CHARSET = latin1;  
--Dumping data  
for table `task`  
    --  
    INSERT INTO `task` (`Id`, `Title`, `Status`) VALUES('1', 'Go to Market tomorrow', 'done'), ('2', 'Email to manager', 'pending'), ('3', 'Push code to GitHub', 'done'), ('4', 'Go For Running', 'done'), ('5', 'Go to Movie', 'pending');  


API با استفاده از Node.js

حالا پس از راه اندازی محیط و پایگاه داده، نیازمند فایلی هستیم که بتواند با پایگاه داده ارتباط برقرار کند. پس فایلی با نام dbconnection.js ایجاد میکنیم و داخل فایل، اطلاعات را برای ارتباط با پایگاه داده ذخیره می کنیم. در مثال زیر، به پایگاه داده محلی که در بالا ایجاد شد، متصل می شویم. برای ارتباط با یک پایگاه داده از راه دور تنها کافیست میزبان ، نام کاربری و رمز عبور زیر را تغییر دهید.

create dbconnection.js 

var mysql = require('mysql');  
var connection = mysql.createPool({  
    host: 'localhost',  
    user: 'root',  
    password: '',  
    database: 'demo'  
});  
module.exports = connection;  

ایجاد مدل وظیفه(model task)

فایل Task.js را داخل پوشه مدل، مانند تصویر زیر ایجاد میکنیم.

API با استفاده از Node.js

از آن جا که راه اندازی اتصال به پایان رسید حالا مدلی را برای Task ایجاد می کنیم. پوشهای با نام models ایجاد کرده و در داخل این پوشه فایل task.js را نیز ایجاد می کنیم. مدل وظیفه ما شامل پنج متد- getAllTasks، getTaskById، addTask، updateTask و deleteTask است.

در ابتدا بابد ماژول dbconnection که پیش از آن در مدل وظیفه ما ایجاد کردیم را include کنیم.

Task.js

var db = require('../dbconnection'); //reference of dbconnection.js  
var Task = {  
    getAllTasks: function(callback) {  
        return db.query("Select * from task", callback);  
    },  
    getTaskById: function(id, callback) {  
        return db.query("select * from task where Id=?", [id], callback);  
    },  
    addTask: function(Task, callback) {  
        return db.query("Insert into task values(?,?,?)", [Task.Id, Task.Title, Task.Status], callback);  
    },  
    deleteTask: function(id, callback) {  
        return db.query("delete from task where Id=?", [id], callback);  
    },  
    updateTask: function(id, Task, callback) {  
        return db.query("update task set Title=?,Status=? where Id=?", [Task.Title, Task.Status, id], callback);  
    }  
};  
module.exports = Task;  

راه اندازی مسیرها

اگرچه، مدلهای dbconnection وtask  را ایجاد کردهایم اما بدون راه اندازی مسیرها، امکان انجام هیچ کاری وجود ندارد.هر مسیر یک متدHTTP است، همچنین GET، PUT، POST، یا delete با یک URL end-point مشخص.

router.get('/:id?', function(req, res, next) {  
    if (req.params.id) {  
        Task.getTaskById(req.params.id, function(err, rows) {  
            if (err) {  
                res.json(err);  
            } else {  
                res.json(rows);  
            }  
        });  
    } else {  
        Task.getAllTasks(function(err, rows) {  
            if (err) {  
                res.json(err);  
            } else {  
                res.json(rows);  
            }  
        });  
    }  
});  

اکنون، کارهایی که تاکنون انجام دادیم را بررسی می کنیم. در این مقاله، فقط متد router.get را ایجاد کرده ایم، که زمانی که کاربر درخواست متد HTTP GET می دهد، اجرا می شود.امکان فراخوانی متد route.get با پارامتر یا بدون پارامتر وجود دارد؛ به عنوان مثال، پارامتر شناسه اختیاری است. برای ایجاد پارامتر اختیاری تنها کافیست پسوند "؟" را اضافه کنیم. بنابراین در ابتدا بررسی خواهد شد که آیا این شناسه فرستاده شده یا خیر. اگر شناسه فرستاده شده باشد، آنگاه متد Task.getTaskById  فراخوانی خواهد شد (این متد در مرحله قبل و در مدل Task.js ایجاد کردیم)؛ در غیر این صورت(اگر شناسه فرستاده نشده باشد)، متد Task.getAllTasks فراخوانی خواهد شد.

router.post('/', function(req, res, next) {  
    Task.addTask(req.body, function(err, count) {  
        if (err) {  
            res.json(err);  
        } else {  
            res.json(req.body); //or return count for 1 & 0  
        }  
    });  
});  

وقتی کاربر متد HTTP POST را درخواست کند، کد بالا اجرا می شود و متد Task.AddTask را صدا زده و داده را به عنوان پارامتر req.body ارسال می کند. سپس شی task برای اعلام درج موفقیت آمیز، برگردانده می شود در غیر این صورت پیام خطا برمی گردد.

Over all Tasks.js
در اینجا، در فایل مسیریابی، باید Task.js را include  کنیم. قبلا این فایل در داخل پوشه مدل ایجاد شده است.

var express = require('express');  
var router = express.Router();  
var Task = require('../models/Task');  
router.get('/:id?', function(req, res, next) {  
    if (req.params.id) {  
        Task.getTaskById(req.params.id, function(err, rows) {  
            if (err) {  
                res.json(err);  
            } else {  
                res.json(rows);  
            }  
        });  
    } else {  
        Task.getAllTasks(function(err, rows) {  
            if (err) {  
                res.json(err);  
            } else {  
                res.json(rows);  
            }  
        });  
    }  
});  
router.post('/', function(req, res, next) {  
    Task.addTask(req.body, function(err, count) {  
        if (err) {  
            res.json(err);  
        } else {  
            res.json(req.body); //or return count for 1 & 0  
        }  
    });  
});  
router.delete('/:id', function(req, res, next) {  
    Task.deleteTask(req.params.id, function(err, count) {  
        if (err) {  
            res.json(err);  
        } else {  
            res.json(count);  
        }  
    });  
});  
router.put('/:id', function(req, res, next) {  
    Task.updateTask(req.params.id, req.body, function(err, rows) {  
        if (err) {  
            res.json(err);  
        } else {  
            res.json(rows);  
        }  
    });  
});  
module.exports = router;  

راه اندازی app.js
این قسمت، مهم ترین بخش از اپلیکیشن node.js است. هنگامی که کاربر یکی از متدها را تقاضا می کند، ابتدا به app.js هدایت خواهد شد، سپس از app.js به مسیرهای درخواست شده، هدایت می شود. بنابراین می توان آن را فایل پیکربندی نامید.

چند خطی را مانند زیر به app.js تان بیافزایید.

  1. var cors=require('cors');
  2. var Tasks=require('./routes/Tasks');
  3. app.use(cors());
  4. app.use('/Tasks',Tasks);

پس از افزودن خطوط بالا، app.js مانند زیر خواهد بود.

var express = require('express');  
var path = require('path');  
var favicon = require('serve-favicon');  
var logger = require('morgan');  
var cookieParser = require('cookie-parser');  
var bodyParser = require('body-parser');  
var cors = require('cors');  
var routes = require('./routes/index');  
var users = require('./routes/users');  
var Tasks = require('./routes/Tasks');  
var app = express();  
// view engine setup  
app.set('views', path.join(__dirname, 'views'));  
app.set('view engine', 'jade');  
// uncomment after placing your favicon in /public  
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));  
app.use(cors());  
app.use(logger('dev'));  
app.use(bodyParser.json());  
app.use(bodyParser.urlencoded({  
    extended: false  
}));  
app.use(cookieParser());  
app.use(express.static(path.join(__dirname, 'public')));  
app.use('/', routes);  
app.use('/users', users);  
app.use('/Tasks', Tasks);  
// catch 404 and forward to error handler  
app.use(function(req, res, next) {  
    var err = new Error('Not Found');  
    err.status = 404;  
    next(err);  
});  
// error handlers  
// development error handler  
// will print stacktrace  
if (app.get('env') === 'development') {  
    app.use(function(err, req, res, next) {  
        res.status(err.status || 500);  
        res.render('error', {  
            message: err.message,  
            error: err  
        });  
    });  
}  
// production error handler  
// no stacktraces leaked to user  
app.use(function(err, req, res, next) {  
    res.status(err.status || 500);  
    res.render('error', {  
        message: err.message,  
        error: {}  
    });  
});  
module.exports = app;  

و در اینجا راه اندازی RESTful API که قبلا ایجاد کردیم تمام شده و آماده اجراست.

npm start

API با استفاده از Node.js

جدول زیر خلاصه ای از مسیرهایی است که از آن استفاده خواهیم کرد و متدهایی که فراخوانی خواهند شد.

API با استفاده از Node.js

برای تست API، از ابزار REST Client از مرورگر Mozilla Firefox استفاده می کنم. همچنین می توان از POSTMAN  در گوگل کروم استفاده کنید.

http://localhost:3000/Tasks

API با استفاده از Node.js

http://localhost:3000/Tasks/1

API با استفاده از Node.js


برای میزبانی API Restful در Heroku server از Demo.Want استفاده می کنیم که از این لینک قابل دانلود است.

نتیجه گیری

همانطور که مشاهد کردیم ایجاد یک restfulAPI به وسیله Node.js ،express و MySQL بسیار آسان است.سورس کد کامل این برنامه از لینک بالا دانلود کنید.

امیدوارم که این مقاله، همچون قبل، مفید بوده باشد. اگر این مقاله به یادگیری Node.js و API REST کمک کرد ، پس لطفا آن را به اشتراک بگذارید .



مطالب مرتبط
ديدگاه خود را ارسال کنيد


محبوب ترين ويدئو هاي انلاين
دوره برنامه نویسی فروشگاه اینترنتی
  • تعداد اعضا 80k
  • قيمت دوره۱۳۰,۰۰۰ تومان
  • امتيازدهي
    1 vote, average: 5٫00 out of 51 vote, average: 5٫00 out of 51 vote, average: 5٫00 out of 51 vote, average: 5٫00 out of 51 vote, average: 5٫00 out of 5( 5٫00 از 1 رای )
    Loading...
دوره آموزشی سیستم ثبت سفارش آنلاین
  • تعداد اعضا 80k
  • قيمت دوره--
  • امتيازدهي
    1 vote, average: 5٫00 out of 51 vote, average: 5٫00 out of 51 vote, average: 5٫00 out of 51 vote, average: 5٫00 out of 51 vote, average: 5٫00 out of 5( 5٫00 از 1 رای )
    Loading...
دوره طراحی سیستم مدیریت مشتریان
  • تعداد اعضا 80k
  • قيمت دوره۶۵,۵۰۰ تومان
  • امتيازدهي
    1 vote, average: 5٫00 out of 51 vote, average: 5٫00 out of 51 vote, average: 5٫00 out of 51 vote, average: 5٫00 out of 51 vote, average: 5٫00 out of 5( 5٫00 از 1 رای )
    Loading...