في المرة السابقة تحدثنا عن كيفية اعداد بيئة العمل وتطرقنا الى جزء بسيط من اعداد الـ API الخاصة بنا.
كيفية بناء RESTful API باستخدام Node.js و Express.js الجزء الأول
في هذه المرة باذن الله سنكمل مابدأناه.
أولاً لتنظيم العمل ننشئ ملف جديد يحتوي على الاعدادات الرئيسية ونسميه “config.js”
سيحتوي على رابط قاعدة البيانات و رقم الـ “Port”
module.exports = { 'database':'your mongodbLink', 'port': process.env.PORT || 3000, };
سنحتاج الان الى الاتصال بقاعدة البيانات MongoDB يمكنك تنصيبها على جهازك من الموقع الرسمي أو على mLab وهي خدمة تمكنك من انشاء واستخدام قاعدة بيانات بمساحة 500 ميجا مجاناً
بعد تنصيبها او استخدامك لـ mLab ستحصل على رابط لقاعدة البيانات قم باضافته في ملف ال config ونستدعي الملف في index.js
var config = require('./config');
ونتصل بقاعدة البيانات بهذا الأمر
mongoose.connect(config.database,function(err){ if(err){ console.log(err); return; } console.log('Connected to database'); });
ونعدل ايضا
var PORT = config.port;
ونجرب الاتصال
نريد الان ان نصيغ شكل البيانات التي نريد تخزينها
ننشئ ملف جديد ونسميه company.js
وستكون محتوياته
var mongoose = require('mongoose'); //ال model ينشى من خلال تعريف ال schema اولاً var Schema = mongoose.Schema; //انشاء الschema او الشكل الخاص ببيانات الشركة var companySchema = new Schema({ name: { type: String, unique: true, required: true }, description: String, Phone: { type: Number, unique: true required: true } }); //تصدير البيانات لاستعمالها module.exports = mongoose.model('Company',companySchema);
ماقمنا بعمله هو استدعاء Mongoose و استدعاء Schema منها لكي نشكل البيانات وانشاء شكل البيانات الذي نريده
والذي يحتوي على اسم الشركة من النوع String ومطلوبٌ إدخاله ولابد ان يكون فريداً
وبيانات الشركة من النوع String اختياريه
ورقم الهاتف للشركة من النوع Number ومطلوبٌ إدخاله ولابد ان يكون فريداً.
نحن الان اعددنا تقريبا كل مانريده لعمل الـ API.
نذهب للملف الرئيسي index.js
ونستخدم الAPI
//نستخدم ال API var api = require('./api')(express); app.use('/api',api);
سيكون الرابط الذي سنستخدمه بهذا الشكل
localhost:3000/api/xxxxx
ننشئ ملف جديد ونسميه api.js
ونبدأ بالمحتوى
var Company = require('./company'); //لتصدير الدالة التي ستحتوي على محتويات ال API كي نستيطع استخدامها فيما بعد module.exports = function(express){ /*انشاء ال router الخاص بنا الذي سيحتوي على المسارات الخاصة بالapi */ var api = express.Router(); return api; };
ملاحظة بسيطة:
عند تعاملنا مع الـ API لن نتعامل مع المتصفح مباشرة بل سنتعامل مع اضافة Postman وهي تمكنا من ارسال ال Requests بالطرق المختلفة POST ,GET , etc …. ومشاهدة الResponse.
سنتعامل الان مع اول مسار لنا وهو /api/company
وسيكون له نوعين اما GET او POST
اذا كان نوع الاستدعاء GET فسنعيد كل الشركات المخزنة في صيغة JSON.
ولو كان POST فهذا يعني انه سيضيف شركة جديدة وسنستقبل البيانات ونخزنها.
api.route('/company') .get(function(req,res){ Company.find({},function(err,data){ if(err){ res.sendStatus(400); return; } res.json(data); }); }).post(function(req,res){ var company = new Company({ name: req.body.name, description : req.body.description, Phone: req.body.Phone }); company.save(function(err){ if(err){ res.sendStatus(406); return; } res.status(200).json({message: 'company has been created'}); }); });
ولنجرب سوياً عن طريق Postmen
نختار نوع POST لنجرب ارسال بيانات
ونختار Body و formurlencoded
ونعبئ الحقول بالاسماء الخاصة ببيانات الشركة ونرسلها Send
ممتاز 😀 نرى هنا رسالة انه تم انشاء بيانات الشركة بنجاح.
يمكننا التحقق من جميع البيانات المخزنة عن طريق استخدام GET
وسيكون الرد بجميع البيانات المخزنة كالتالي:
وكما تلاحظ فان Morgn يقوم بتتبع كل الrequests و ال responses:
ولكي نقوم بحذف شركة معينة او تحديث بياناتها نقوم بكتابة الكود التالي:
api.route('/company/:name') .delete(function(req,res){ Company.findOneAndRemove({name: req.params.name},function(err){ if(err){ res.status(404).json({message: "user not found"}); return; } res.status(200).json({message:"Comapny removed"}); }); }).put(function(req,res){ Company.findOneAndUpdate({name: req.params.name}, {$set:{name: req.body.name,description:req.body.description,Phone: req.body.Phone}}, function(err){ if(err){ res.status(400).json({message:err}); return; } res.status(200).json({message: "Updated"}); }); });
سنقوم باضافة اسم الشركة في الرابط ونبحث عنه ونقوم بحذفه يمكنك جعلها بال ID او برقم الهاتف.
عند ظهور اي اخطاء سيطبع له رسالة user not found مع حالة 404
انما في حال حذف المستخدم سنخبره بانه تم المسح مع حالة 200 OK .
وفي حالة التحديث “PUT” سيقوم بجلب بيانات المستخدم وتعديلها حسب ماسيتم ارساله من ال Form .
في نهاية الأمر سيكون ملف الـ API بهذا الشكل :
أرجو ان يكون الشرح واضح وان كان هناك اي استفسار فضلاً اتركه في تعليق وساقوم بالاجابة عليه.
شرح رااااائع نتمنى المزيد من الشروحات على node
تسلم ياهندسه
شكراً 😀
الله ينور يا هندسة ، فينك من زمان ، بقالي اسبوع في الموضوع دة ، وأنت ما شاء الله أنجزتني ،،،
شكراً 😀
بالتوفيق ان شاء الله
شكرًا لك اخي ..
جعلها الله في ميزان حسناتك
شكراً