English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

NodeJS دروس أساسية

NodeJS Express.js

NodeJS 缓冲&URL;

NodeJS MySql

NodeJS MongoDB

NodeJS ملف (FS)

NodeJS أخرى

API RESTful لـ Node.js

ما هو REST؟

REST هي تحويل الحالة التعبيرية (بالإنجليزية: Representational State Transfer، اختصارًا REST) وهي نمط معماري للبرمجيات اقترحها الدكتور Roy Fielding في ورقته البحثية في عام 2000.

التحويل الوظيفي للحالة التعبيرية هو مجموعة من القيود المعمارية والأسس. تطبيقات أو التصميمات التي تفي بهذه القيود والأسس هي RESTful. يجب ملاحظة أن REST هو أسلوب تصميم وليس معيارًا. عادة ما يعتمد REST على استخدام HTTP، URI، وXML (جزء من لغة العلامات العامة القياسية) وHTML (تطبيق لغة العلامات العامة القياسية) هذه المعايير والبروتوكولات الشائعة بشكل واسع. يستخدم REST عادةً تنسيق بيانات JSON.

طريقة HTTP

الأساليب الأربعة الأساسية في بنية REST هي:}}

  • GET - تستخدم لاستقبال بيانات.

  • PUT - تستخدم لتحديث أو إضافة بيانات.

  • DELETE - تستخدم لإزالة بيانات.

  • POST - تستخدم لإضافة بيانات.

خدمات الويب RESTful

خدمة الويب هي تطبيق مستقل عن المنصة، منخفض التشابك، محمي، يعتمد على البرمجة عبر الويب، يمكن استخدامه لوصف، نشر، اكتشاف، تنسيق وتكوين هذه التطبيقات باستخدام معايير XML المفتوحة (مكون من لغة العلامات النصية العامة)، ويستخدم لتحقيق تطبيقات متوافرة عبر الشبكة.

خدمات الويب التي تعتمد على بنية REST هي RESTful.

بفضل طبيعتها الخفيفة ونقل البيانات عبر HTTP مباشرة، أصبحت طرق RESTful للخدمات الويب أقلها استهلاكاً للطاقة كوسيلة بديلة. يمكن تنفيذ العملاء باستخدام لغات متعددة (مثل Java، Perl، Ruby، Python، PHP وJavascript[بما في ذلك Ajax]).

خدمات الويب RESTful يمكن الوصول إليها عادة من خلال عميل آلي أو تطبيق يمثل المستخدم، ولكن سهولة استخدام هذه الخدمات تسمح للمستخدمين بالتفاعل معها مباشرة باستخدام متصفحهم الويب لإنشاء URL GET واستقبال المحتوى المعدل.

إنشاء RESTful

أولاً، قم بإنشاء ملف موارد JSON users.json، يحتوي على المحتوى التالي:

{
   "user1": {
      "name": "Sea",
      "password": "password1",
      "profession" : "teacher",
      "id": 1
   },
   "user2": {
      "name": "suresh",
      "password" : "password2"}}
      "profession" : "librarian",
      "id": 2
   },
   "user3" : {
      "name" : "ramesh",
      "password" : "password3",
      "profession" : "clerk",
      "id": 3
   }
}

بناءً على هذه البيانات، قمنا بإنشاء RESTful API التالي:

الرقمURIطريقة HTTPإرسال المحتوىالنتيجة
1listUsersGETفراغعرض قائمة جميع المستخدمين
2addUserPOSTقائمة JSONإضافة مستخدم جديد
3deleteUserDELETEقائمة JSONحذف المستخدم
4:idGETفراغعرض تفاصيل المستخدم

الحصول على قائمة المستخدمين

الخطوط التالية، قمنا بإنشاء API RESTful listUsers، تستخدم لقراءة قائمة معلومات المستخدمين، ملف الكود server.js كما يلي:

var express = require('express');
var app = express();
var fs = require("fs");
app.get('/listUsers', function(req, res) {
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       console.log( data );
       res.end( data );
   });
}
var server = app.listen(8081, function () {
  var host = server.address().address
  var port = server.address().port
  console.log("مثال تطبيقي، العنوان هو http://%s:%s", host, port)
}

الخطوات التالية هي تنفيذ الأوامر التالية:

$ node server.js 
مثال تطبيقي، العنوان هو http://0.0.0.0:8081

في المتصفح اكتب http://127.0.0.1:8081/listUsers، النتيجة كما يلي:

{
   "user1": {
      "name": "Sea",
      "password": "password1",
      "profession" : "teacher",
      "id": 1
   },
   "user2": {
      "name": "suresh",
      "password" : "password2"}}
      "profession" : "librarian",
      "id": 2
   },
   "user3" : {
      "name" : "ramesh",
      "password" : "password3",
      "profession" : "clerk",
      "id": 3
   }
}

إضافة مستخدم

الخطوط التالية، قمنا بإنشاء API RESTful addUser، لإنشاء بيانات مستخدم جديد، كود ملف server.js كما يلي:

var express = require('express');
var app = express();
var fs = require("fs");
// بيانات المستخدم الجديد
var user = {
   "user4" : {
      "name" : "mohit",
      "password" : "password4",
      "profession" : "teacher",
      "id": 4
   }
}
app.get('/addUser', function(req, res) {
   // قراءة البيانات الحالية
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       data = JSON.parse( data );
       data["user4"] = user["user4"];
       console.log( data );
       res.end( JSON.stringify(data));
   });
}
var server = app.listen(8081, function () {
  var host = server.address().address
  var port = server.address().port
  console.log("مثال تطبيقي، العنوان هو http://%s:%s", host, port)
}

الخطوات التالية هي تنفيذ الأوامر التالية:

$ node server.js 
مثال تطبيقي، العنوان هو http://0.0.0.0:8081

زيارة عنوان الـ http://127.0.0.1:8081/addUser في المتصفح، النتيجة كما يلي:

{ user1:
   { name: 'Sea',
     password: 'password1',
     profession: 'teacher',
     id: 1 },
  user2:
   { name: 'suresh',
     password: 'password2',
     profession: 'librarian',
     id: 2},
  user3:
   { name: 'ramesh',
     password: 'password3',
     profession: 'clerk',
     id: 3},
  user4:
   { name: 'mohit',
     password: 'password4',
     profession: 'teacher',
     id: 4} 
}

عرض تفاصيل المستخدم

الخطوط التالية، قمنا بإنشاء API RESTful :id (معرف المستخدم)، لقراءة تفاصيل المستخدم المحدد، كود ملف server.js كما يلي:

var express = require('express');
var app = express();
var fs = require("fs");
app.get('/:id', function(req, res) {
   // أولاً نقرأ المستخدم الحالي
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       data = JSON.parse( data );
       var user = data["user" + req.params.id]; 
       console.log( user );
       res.end( JSON.stringify(user));
   });
}
var server = app.listen(8081, function () {
  var host = server.address().address
  var port = server.address().port
  console.log("مثال تطبيقي، العنوان هو http://%s:%s", host, port)
}

الخطوات التالية هي تنفيذ الأوامر التالية:

$ node server.js 
مثال تطبيقي، العنوان هو http://0.0.0.0:8081

زيارة عنوان الـ http://127.0.0.1:8081/2 في المتصفح، النتيجة كما يلي:

{
   "name":"suresh",
   "password":"password2",
   "profession":"librarian",
   "id":2
}

حذف المستخدم

الخطوط التالية، قمنا بإنشاء API RESTful deleteUser، ل�除 التفاصيل الخاصة بالمستخدم المحدد، في المثال التالي، معرف المستخدم هو 2، رمز ملف server.js كما يلي:

var express = require('express');
var app = express();
var fs = require("fs");
var id = 2;
app.get('/deleteUser', function (req, res) {
   // First read existing users.
   fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
       data = JSON.parse( data );
       delete data["user" + id];
       
       console.log( data );
       res.end( JSON.stringify(data));
   });
}
var server = app.listen(8081, function () {
  var host = server.address().address
  var port = server.address().port
  console.log("مثال تطبيقي، العنوان هو http://%s:%s", host, port)
}

الخطوات التالية هي تنفيذ الأوامر التالية:

$ node server.js 
مثال تطبيقي، العنوان هو http://0.0.0.0:8081

زيارة العنوان التالي في المتصفح http://127.0.0.1:8081/deleteUser، النتيجة كما يلي:

{ user1:
   { name: 'Sea',
     password: 'password1',
     profession: 'teacher',
     id: 1 },
  user3:
   { name: 'ramesh',
     password: 'password3',
     profession: 'clerk',
     id: 3 } 
}