English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
REST هي تحويل الحالة التعبيرية (بالإنجليزية: Representational State Transfer، اختصارًا REST) وهي نمط معماري للبرمجيات اقترحها الدكتور Roy Fielding في ورقته البحثية في عام 2000.
التحويل الوظيفي للحالة التعبيرية هو مجموعة من القيود المعمارية والأسس. تطبيقات أو التصميمات التي تفي بهذه القيود والأسس هي RESTful. يجب ملاحظة أن REST هو أسلوب تصميم وليس معيارًا. عادة ما يعتمد REST على استخدام HTTP، URI، وXML (جزء من لغة العلامات العامة القياسية) وHTML (تطبيق لغة العلامات العامة القياسية) هذه المعايير والبروتوكولات الشائعة بشكل واسع. يستخدم REST عادةً تنسيق بيانات JSON.
الأساليب الأربعة الأساسية في بنية REST هي:}}
GET - تستخدم لاستقبال بيانات.
PUT - تستخدم لتحديث أو إضافة بيانات.
DELETE - تستخدم لإزالة بيانات.
POST - تستخدم لإضافة بيانات.
خدمة الويب هي تطبيق مستقل عن المنصة، منخفض التشابك، محمي، يعتمد على البرمجة عبر الويب، يمكن استخدامه لوصف، نشر، اكتشاف، تنسيق وتكوين هذه التطبيقات باستخدام معايير XML المفتوحة (مكون من لغة العلامات النصية العامة)، ويستخدم لتحقيق تطبيقات متوافرة عبر الشبكة.
خدمات الويب التي تعتمد على بنية REST هي RESTful.
بفضل طبيعتها الخفيفة ونقل البيانات عبر HTTP مباشرة، أصبحت طرق RESTful للخدمات الويب أقلها استهلاكاً للطاقة كوسيلة بديلة. يمكن تنفيذ العملاء باستخدام لغات متعددة (مثل Java، Perl، Ruby، Python، PHP وJavascript[بما في ذلك Ajax]).
خدمات الويب RESTful يمكن الوصول إليها عادة من خلال عميل آلي أو تطبيق يمثل المستخدم، ولكن سهولة استخدام هذه الخدمات تسمح للمستخدمين بالتفاعل معها مباشرة باستخدام متصفحهم الويب لإنشاء URL GET واستقبال المحتوى المعدل.
أولاً، قم بإنشاء ملف موارد 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 | إرسال المحتوى | النتيجة |
---|---|---|---|---|
1 | listUsers | GET | فراغ | عرض قائمة جميع المستخدمين |
2 | addUser | POST | قائمة JSON | إضافة مستخدم جديد |
3 | deleteUser | DELETE | قائمة JSON | حذف المستخدم |
4 | :id | GET | فراغ | عرض تفاصيل المستخدم |
الخطوط التالية، قمنا بإنشاء 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 } }