تنفيذ اتصالات مع خوادم وأجهزة أخرى لإرسال وعرض البياتات Apis ( الجزء الثاني )

الدرس: تنفيذ اتصالات مع خوادم وأجهزة أخرى لإرسال وعرض البياتات Apis ( الجزء الثاني )

المدة: 70 دقائق

وصف الدرس

إنشاء API باستخدام Node.js وHTTP Server


في هذا الدرس، سنتعلم كيفية إنشاء API بسيط باستخدام Node.js ومكتبة HTTP، حيث يمكن استقبال الطلبات والرد عليها ببيانات JSON.

 ملف الخادم الرئيسي (`index.js`)


في هذا الملف، سنقوم بتهيئة الخادم HTTP، وتحديد مسارات الطلبات، ومن ثم توجيهها إلى المعالجين المناسبين.

```javascript
// Dependencies
var http = require('http');
var StringDecoder = require('string_decoder').StringDecoder;
var config = require('./lib/config');
var handlers = require('./lib/handlers');
var helpers = require('./lib/helpers');

// Instantiate the HTTP server
var httpServer = http.createServer(function (req, res) {
var resHeaders = {
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json"
};

// Parse the URL
var headers = req.headers;
var parsedUrl = new URL(headers.host + req.url);
var path = parsedUrl.pathname;
var trimmedPath = path.replace(/[0-9]+[\/]/, '').replace(/^\/+|\/+$/g, '');

// Get the HTTP method
var method = req.method.toLowerCase();

// Get the Query string as Object
var queryStringObject = new URLSearchParams(parsedUrl.search);

// Get the payload
var decoder = new StringDecoder('utf-8');
var buffer = '';
req.on('data', function (data) {
buffer += decoder.write(data);
});

req.on('end', function () {
buffer += decoder.end();

// Choose the handler this request should go to; if not found, choose the notFound handler
var chosenHandler = typeof(router[trimmedPath]) !== 'undefined' ? router[trimmedPath] : handlers.notFound;

// Construct the data object to send to the handler
var data = {
'trimmedPath': trimmedPath,
'queryStringObject': queryStringObject,
'method': method,
'headers': headers,
'payload': helpers.parseJsonToObject(buffer)
};

// Route the request to the handler specified in the router
chosenHandler(data, function (statusCode, payload) {
// Use the status code called back by the handler, or default to 200
statusCode = typeof(statusCode) === 'number' ? statusCode : 200;
// Use the payload called back by the handler, or default to an empty object
payload = typeof(payload) === 'object' ? payload : {};

// Convert the payload to a string
var payloadString = JSON.stringify(payload);

// Send the response
res.writeHead(statusCode, resHeaders);
res.end(payloadString);

// Log the request path
console.log('Returning this response:', statusCode, payloadString);
// Start the server
httpServer.listen(config.httpPort, function () {
console.log('The server is listening on port ' + config.httpPort);

// Define a request router
var router = {
'ping': handlers.ping,
'requests': handlers.requests
};
```

 شرح الكود


1. التبديل بين المسارات (`router`):
- يتم تعريف `router` لتوجيه الطلبات إلى المعالجين المناسبين بناءً على المسار المطلوب. في هذا المثال، يتم تعيين `ping` لمعالج `handlers.ping` و `requests` لمعالج `handlers.requests`.

2. معالجة الطلبات:
- يتم استخدام `http.createServer` لإنشاء خادم HTTP يستجيب لجميع الطلبات الواردة إليه.
- يتم معالجة كل طلب عن طريق قراءة المسار والمتغيرات الأخرى مثل الطريقة والبيانات المرسلة.
- تحديد المعالج المناسب لكل مسار باستخدام `router` وتمرير البيانات إليه.

3. الاستجابة:
- بعد معالجة الطلب، يتم تشكيل الاستجابة باستخدام `res.writeHead` لتعيين رأس الاستجابة مع الرمز النموذجي والرئيسية المحددة.
- يتم تحويل البيانات المرسلة من خلال `res.end` بتنسيق JSON.

الخلاصة


باستخدام هذا النهج، يمكنك إنشاء خدمة API بسيطة تستجيب للطلبات الواردة وترسل البيانات بشكل مثالي. يساعد هذا النمط في بناء تطبيقات قائمة على الويب تتفاعل مع قاعدة البيانات بسهولة وكفاءة.

الفيديوهات

سجل دخول وتأكد من اشتراكك في هذا البرنامج الدراسي للوصول إلى الأدوات والمواد التدريبية و الفيديوهات

فيديو الدرس التعليمي تنفيذ اتصالات مع خوادم وأجهزة أخرى لإرسال وعرض البياتات Apis ( الجزء الثاني )

المصادر

سجل دخول وتأكد من اشتراكك في هذا البرنامج الدراسي للوصول إلى الأدوات والمواد التدريبية و المصادر

الأوامر البرمجية المستخدمة

ملحقات ال PDF

الدروس والاختبارات لتعلم هذه الدورة التدريبية : تعلم البرمجة من الصفر وتطوير صفحات الويب الإحترافية مع لغة جافاسكربت JavaScript

has been added to the cart. View Cart