Body-parser: Difference between revisions

From binaryoption
Jump to navigation Jump to search
Баннер1
(@pipegas_WP-test)
 
(@pipegas_WP-test)
Line 1: Line 1:
[[ملف:مثال_شعار_بودي_بارسر.png|center|200px|شعار بودي بارسر]]
[[ملف:ExampleImage.png|center|500px|مثال توضيحي]]


== بودي بارسر: دليل شامل للمبتدئين ==
# Body-parser: تحليل بيانات الطلبات في تطبيقات الويب


'''بودي بارسر (Body-parser)''' هو وسيط (middleware) أساسي في تطبيقات الويب المبنية باستخدام [[Node.js]] و [[Express.js]]. وظيفته الأساسية هي تحليل بيانات الطلب الواردة من العميل (مثل المتصفح) وتحويلها إلى تنسيق يمكن لتطبيقك فهمه ومعالجته بسهولة. بدون بودي بارسر، ستصل بيانات الطلب إلى خادمك كسلسلة نصية خام، مما يجعل استخلاص المعلومات منها أمرًا صعبًا للغاية. هذا المقال يقدم شرحًا مفصلاً لمفهوم بودي بارسر، وأنواعه المختلفة، وكيفية استخدامه في تطبيقات Express.js، مع التركيز على الجوانب العملية والتطبيقات الواقعية.
## مقدمة


=== لماذا نحتاج إلى بودي بارسر؟ ===
في عالم تطوير تطبيقات الويب، وخاصة تلك التي تعتمد على [[Node.js]] و [[Express.js]]، يعتبر التعامل مع بيانات الطلبات الواردة من المستخدمين أمرًا بالغ الأهمية. هذه البيانات قد تكون في أشكال مختلفة، مثل بيانات نموذجية (Form Data)، بيانات JSON، أو بيانات URL المشفرة. هنا يأتي دور `body-parser`، وهي حزمة (package) وسيطة (middleware) تعمل على تحليل هذه البيانات وتحويلها إلى تنسيق يسهل الوصول إليه واستخدامه داخل تطبيقك.  هذه المقالة موجهة للمبتدئين وتهدف إلى شرح `body-parser` بتفصيل شامل، بدءًا من المفاهيم الأساسية وصولًا إلى الاستخدامات المتقدمة.  سنناقش أيضًا أهمية `body-parser` في سياق [[الخوادم]] و [[بروتوكول HTTP]].


عندما يرسل العميل طلبًا إلى الخادم، قد يحتوي هذا الطلب على بيانات مرفقة (data) في عدة أجزاء، مثل:
## ما هو Body-parser؟


*  '''بيانات النموذج (Form Data):''' تُستخدم لإرسال البيانات من نماذج HTML، غالبًا باستخدام طريقة POST.
`body-parser` هي حزمة Node.js تقوم بتحليل أجسام طلبات HTTP الواردة. بشكل افتراضي، لا يوفر Express.js آلية مدمجة لتحليل أجسام الطلبات. لذلك، نحتاج إلى استخدام حزمة مثل `body-parser` للقيام بذلك. تقوم `body-parser` بتزويد وظائف لتحليل أنواع مختلفة من البيانات، بما في ذلك:
*  '''بيانات JSON (JSON Data):''' تنسيق شائع لتبادل البيانات بين الخادم والعميل، خاصة في تطبيقات الويب الحديثة و [[واجهات برمجة التطبيقات (APIs)]].
*  '''بيانات URL-encoded:''' تنسيق تستخدمه المتصفحات لإرسال البيانات في عنوان URL، غالبًا في استعلامات GET.
*  '''بيانات Raw (Raw Data):''' بيانات غير مُعالجة، يمكن أن تكون بأي تنسيق.


بدون بودي بارسر، ستصل هذه البيانات إلى الخادم كسلسلة نصية طويلة وغير منظمةيساعد بودي بارسر في تحليل هذه السلاسل النصية وتحويلها إلى كائنات JavaScript (objects) أو مصفوفات (arrays) يمكن لتطبيقك الوصول إليها واستخدامها بسهولة.
*  **URL-encoded form data:**  البيانات التي يتم إرسالها من نماذج HTML باستخدام طريقة POST.
*  **JSON:** تنسيق تبادل البيانات الشائع المستخدم في تطبيقات الويب الحديثة.
*  **Raw:**  البيانات الخام، مثل البيانات الثنائية.
*  **Text:**  البيانات النصية العادية.


=== أنواع بودي بارسر ===
## لماذا نستخدم Body-parser؟


هناك العديد من أنواع بودي بارسر المتاحة، ولكل منها ميزات وخصائص مختلفة. بعض الأنواع الأكثر شيوعًا تشمل:
هناك عدة أسباب تجعل استخدام `body-parser` ضروريًا:


'''body-parser (القديم):'''  كان هذا هو الحل الأكثر شيوعًا في الماضي، ولكنه الآن يعتبر قديمًاتم دمج وظائفه في Express.js نفسه بدءًا من الإصدار 4.16.0.
**سهولة الوصول إلى البيانات:**  بدون `body-parser`، ستصل بيانات الطلب كـ `Buffer`، وهو تنسيق بيانات ثنائي`body-parser` يحول هذه البيانات إلى كائنات JavaScript سهلة الاستخدام.
'''raw-body:''' يوفر الوصول إلى البيانات الخام للطلب قبل أي معالجة.
**دعم أنواع مختلفة من البيانات:**  `body-parser` يوفر دعمًا لتحليل أنواع مختلفة من البيانات، مما يجعل تطبيقك أكثر مرونة.
'''urlencoded ( جزء من Express.js ):''' يحلل بيانات URL-encoded.
**الأمان:** يمكن لـ `body-parser` المساعدة في حماية تطبيقك من الهجمات عن طريق التحقق من صحة البيانات الواردة.
'''json ( جزء من Express.js ):''' يحلل بيانات JSON.
**التكامل مع Express.js:**  `body-parser` مصمم للعمل بسلاسة مع Express.js، مما يجعله خيارًا طبيعيًا لتطبيقات Express.js.
*  '''text ( جزء من Express.js ):''' يحلل بيانات النص العادي.


=== استخدام بودي بارسر في Express.js ===
## تثبيت Body-parser


اعتبارًا من Express.js 4.16.0، لم تعد هناك حاجة لتثبيت حزمة `body-parser` بشكل منفصل.  تم دمج الوظائف الأساسية في Express.js نفسه.  لتحليل أنواع مختلفة من بيانات الطلب، يمكنك استخدام الوظائف المضمنة في Express.js كما هو موضح أدناه:
لتثبيت `body-parser`، استخدم مدير الحزم npm (Node Package Manager):


{| class="wikitable"
```bash
|+ تحليل أنواع بيانات الطلب المختلفة في Express.js
npm install body-parser
|---|---|
```
| **نوع البيانات** | **الكود** | **شرح** |
 
| URL-encoded | `express.urlencoded({ extended: true })` | يحلل بيانات URL-encoded.  `extended: true` يسمح بتحليل هياكل البيانات المعقدة. |
## استخدام Body-parser في تطبيق Express.js
| JSON | `express.json()` | يحلل بيانات JSON. |
| Raw | `express.raw()` | يوفر الوصول إلى البيانات الخام للطلب. |
| Text | `express.text()` | يحلل بيانات النص العادي. |
|}


'''مثال:'''
بعد تثبيت `body-parser`، يمكنك استخدامه في تطبيق Express.js الخاص بك. إليك مثال بسيط:


```javascript
```javascript
const express = require('express');
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const app = express();
const port = 3000;


// تحليل بيانات URL-encoded
// استخدام body-parser لتحليل بيانات JSON
app.use(express.urlencoded({ extended: true }));
app.use(bodyParser.json());


// تحليل بيانات JSON
// استخدام body-parser لتحليل بيانات URL-encoded
app.use(express.json());
app.use(bodyParser.urlencoded({ extended: false }));


app.post('/submit', (req, res) => {
app.post('/submit', (req, res) => {
   console.log('بيانات النموذج:', req.body);
   console.log('اسم المستخدم:', req.body.username);
  console.log('كلمة المرور:', req.body.password);
   res.send('تم استلام البيانات بنجاح!');
   res.send('تم استلام البيانات بنجاح!');
});
});


app.listen(port, () => {
app.listen(3000, () => {
   console.log(`التطبيق يستمع على المنفذ ${port}`);
   console.log('الخادم يعمل على المنفذ 3000');
});
```
 
في هذا المثال:
 
*  نستورد وحدتي `express` و `body-parser`.
*  ننشئ تطبيق Express.js جديدًا.
*  نستخدم `bodyParser.json()` لتحليل بيانات JSON الواردة.  سيتم تخزين البيانات المحللة في `req.body`.
*  نستخدم `bodyParser.urlencoded({ extended: false })` لتحليل بيانات URL-encoded الواردة.  `extended: false` يستخدم مكتبة `querystring` لتحليل البيانات، بينما `extended: true` يستخدم مكتبة `qs`، وهي أكثر قوة ولكنها قد تكون أبطأ.
*  نحدد مسار POST `/submit` الذي يتعامل مع البيانات المرسلة.
*  في داخل معالج المسار، يمكننا الوصول إلى البيانات المرسلة باستخدام `req.body`.
*  نستمع إلى المنفذ 3000.
 
## أنواع Body-parser المختلفة
 
`body-parser` يوفر عدة وظائف لتحليل أنواع مختلفة من البيانات.  إليك نظرة عامة على بعض الأنواع الأكثر شيوعًا:
 
### 1. bodyParser.json()
 
يقوم بتحليل بيانات JSON الواردة.  عادةً ما تستخدم هذه الوظيفة عندما يرسل العميل بيانات بتنسيق JSON.
 
مثال:
 
```javascript
app.use(bodyParser.json());
 
app.post('/api/data', (req, res) => {
  console.log(req.body);
  res.send('تم استلام بيانات JSON');
});
```
 
### 2. bodyParser.urlencoded({ extended: false })
 
يقوم بتحليل بيانات URL-encoded الواردة.  عادةً ما تستخدم هذه الوظيفة عندما يرسل العميل بيانات من نموذج HTML باستخدام طريقة POST.  كما ذكرنا سابقًا، `extended: false` يستخدم مكتبة `querystring` لتحليل البيانات.
 
مثال:
 
```javascript
app.use(bodyParser.urlencoded({ extended: false }));
 
app.post('/submit', (req, res) => {
  console.log(req.body);
  res.send('تم استلام بيانات النموذج');
});
```
 
### 3. bodyParser.urlencoded({ extended: true })
 
يشبه `bodyParser.urlencoded({ extended: false })`، ولكن يستخدم مكتبة `qs` لتحليل البيانات.  `qs` أكثر قوة وتوفر ميزات إضافية، ولكنها قد تكون أبطأ.
 
مثال:
 
```javascript
app.use(bodyParser.urlencoded({ extended: true }));
 
app.post('/submit', (req, res) => {
  console.log(req.body);
  res.send('تم استلام بيانات النموذج');
});
```
 
### 4. bodyParser.raw()
 
يقوم بتحليل البيانات الخام الواردة.  عادةً ما تستخدم هذه الوظيفة عندما تحتاج إلى معالجة البيانات الثنائية أو البيانات التي لا يمكن تحليلها باستخدام الأنواع الأخرى.
 
مثال:
 
```javascript
app.use(bodyParser.raw());
 
app.post('/upload', (req, res) => {
  console.log(req.body); // البيانات الخام
  res.send('تم استلام البيانات الخام');
});
});
```
```


في هذا المثال، `app.use()`  يستخدم لتطبيق وسيطي (middleware) على جميع الطلبات الواردة.  `express.urlencoded({ extended: true })`  يحلل بيانات URL-encoded، و `express.json()` يحلل بيانات JSON.  في معالج المسار `/submit`، يمكن الوصول إلى البيانات المحللة من خلال `req.body`.
### 5. bodyParser.text()
 
يقوم بتحليل البيانات النصية العادية الواردة.  عادةً ما تستخدم هذه الوظيفة عندما تحتاج إلى معالجة البيانات النصية التي ليست بتنسيق JSON أو URL-encoded.
 
مثال:
 
```javascript
app.use(bodyParser.text());


=== التعامل مع أنواع مختلفة من الطلبات ===
app.post('/message', (req, res) => {
  console.log(req.body); // البيانات النصية
  res.send('تم استلام الرسالة النصية');
});
```


*  '''طلبات GET:'''  عادةً ما تحتوي طلبات GET على بيانات في عنوان URL (query parameters).  يمكن الوصول إلى هذه البيانات باستخدام `req.query`. لا تحتاج إلى بودي بارسر لطلبات GET.
## ترتيب استخدام Body-parser
*  '''طلبات POST:'''  عادةً ما تحتوي طلبات POST على بيانات في نص الطلب (request body).  يستخدم بودي بارسر لتحليل هذه البيانات.
*  '''طلبات PUT و DELETE:'''  يمكن أن تحتوي طلبات PUT و DELETE أيضًا على بيانات في نص الطلب.  يستخدم بودي بارسر لتحليل هذه البيانات أيضًا.


=== استخدام بودي بارسر مع أنواع محتوى مختلفة (Content-Type) ===
من المهم ترتيب استخدام `body-parser` بشكل صحيح في تطبيق Express.js الخاص بك.  يجب وضع `body-parser` قبل أي مسارات (routes) تحتاج إلى الوصول إلى بيانات الطلب.  وإلا، فلن يتم تحليل البيانات قبل وصولها إلى معالج المسار.


يجب أن يتطابق نوع بودي بارسر المستخدم مع نوع المحتوى (Content-Type) الذي يرسله العميل.  على سبيل المثال:
مثال:


*  إذا كان العميل يرسل بيانات JSON، فيجب استخدام `express.json()`.
```javascript
*  إذا كان العميل يرسل بيانات URL-encoded، فيجب استخدام `express.urlencoded({ extended: true })`.
const express = require('express');
*  إذا كان العميل يرسل بيانات نصية عادية، فيجب استخدام `express.text()`.
const bodyParser = require('body-parser');


إذا لم يتطابق نوع بودي بارسر مع نوع المحتوى، فلن يتم تحليل البيانات بشكل صحيح، وستكون `req.body` فارغة أو غير صالحة.
const app = express();


=== الأخطاء الشائعة وحلولها ===
// يجب وضع body-parser قبل المسارات
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));


*  '''req.body فارغ:'''  تأكد من أنك تستخدم بودي بارسر الصحيح لنوع المحتوى الذي يرسله العميل.  تأكد أيضًا من أنك قمت بتطبيق بودي بارسر قبل معالج المسار الذي تريد الوصول إلى `req.body` منه.
app.post('/submit', (req, res) => {
*   '''خطأ في التحليل:'''  إذا كانت البيانات المرسلة من العميل غير صالحة (على سبيل المثال، JSON غير صالح)، فقد يحدث خطأ في التحليل.  تعامل مع هذه الأخطاء باستخدام وسيطي لمعالجة الأخطاء (error handling middleware).
  console.log(req.body);
*  '''حدود حجم الطلب:'''  قد يكون هناك حد لحجم الطلب الذي يمكن للخادم معالجته.  إذا كان الطلب كبيرًا جدًا، فقد يحدث خطأ.  يمكنك زيادة حد حجم الطلب باستخدام وسيطي مثل `body-parser` (القديم) أو عن طريق تكوين الخادم.
   res.send('تم استلام البيانات');
});


=== أفضل الممارسات ===
app.listen(3000, () => {
  console.log('الخادم يعمل');
});
```


*  '''استخدم Express.js المدمج:'''  بدلاً من تثبيت حزمة `body-parser` بشكل منفصل، استخدم الوظائف المضمنة في Express.js 4.16.0 والإصدارات الأحدث.
## اعتبارات الأمان
*  '''حدد أنواع المحتوى المدعومة:'''  حدد أنواع المحتوى التي يدعمها تطبيقك واستخدم بودي بارسر المناسب لكل نوع.
*  '''تحقق من صحة البيانات:'''  تحقق من صحة البيانات التي يتم تحليلها للتأكد من أنها تلبي توقعاتك.  استخدم مكتبات التحقق من الصحة (validation libraries) لتبسيط هذه العملية.
*  '''تعامل مع الأخطاء:'''  تعامل مع الأخطاء التي قد تحدث أثناء تحليل البيانات بشكل صحيح.  استخدم وسيطي لمعالجة الأخطاء لتسجيل الأخطاء وإعادة رسائل خطأ مفيدة للعميل.


=== بودي بارسر وتطبيقات الويب الحديثة ===
عند استخدام `body-parser`، من المهم مراعاة بعض اعتبارات الأمان:


في تطبيقات الويب الحديثة، غالبًا ما يتم استخدام JSON كشكل أساسي لتبادل البيانات بين الخادم والعميللذلك، يعتبر `express.json()` هو بودي بارسر الأكثر استخدامًاومع ذلك، لا يزال من المهم فهم كيفية التعامل مع أنواع بيانات الطلب الأخرى، مثل URL-encoded و raw data.
*  **التحقق من صحة البيانات:**  يجب دائمًا التحقق من صحة البيانات الواردة قبل استخدامها.  يمكن أن يساعد ذلك في منع الهجمات مثل حقن SQL وهجمات XSS.
*  **حد حجم الجسم:**  يمكنك تحديد حد لحجم جسم الطلب لمنع الهجمات التي تستهدف استهلاك موارد الخادم.  يمكنك القيام بذلك باستخدام خيارات `body-parser`.
*  **استخدام HTTPS:** يجب دائمًا استخدام HTTPS لتشفير البيانات المرسلة بين العميل والخادم.


===  العلاقة ببودى بارسر و [[RESTful APIs]] ===
## بدائل Body-parser


عند بناء [[واجهات برمجة التطبيقات (APIs)]] RESTful، يلعب بودي بارسر دورًا حيويًا في معالجة البيانات المرسلة من قبل العملاء. فهم كيفية تحليل أنواع مختلفة من البيانات (JSON، URL-encoded، إلخ) ضروري لتصميم وتنفيذ واجهات برمجة تطبيقات فعالة وموثوقةيتيح لك بودي بارسر استخلاص البيانات الضرورية من الطلبات الواردة واستخدامها لتنفيذ العمليات المطلوبة.
على الرغم من أن `body-parser` هو خيار شائع، إلا أن هناك بدائل أخرى متاحة.  أحد البدائل الشائعة هو `express.json()` و `express.urlencoded()`، وهما وظيفتان مدمجتان في Express.js اعتبارًا من الإصدار 4.16.0هاتان الوظيفتان توفران نفس الوظائف الأساسية التي يوفرها `body-parser`.


===  التحليل المتقدم للبيانات ===
مثال:


بالإضافة إلى التحليل الأساسي، يمكن استخدام بودي بارسر مع مكتبات أخرى للتحليل المتقدم للبيانات. على سبيل المثال، يمكنك استخدام مكتبات للتحقق من صحة البيانات أو لتحويل البيانات إلى تنسيقات مختلفة.
```javascript
const express = require('express');


=== بودي بارسر و [[الأمان]] ===
const app = express();


يجب أن تكون على دراية بمخاطر الأمان المحتملة عند التعامل مع بيانات الطلب. تأكد من التحقق من صحة البيانات وتنظيفها قبل استخدامها لتجنب هجمات مثل حقن SQL و [[XSS (Cross-Site Scripting)]].
// استخدام express.json() لتحليل بيانات JSON
app.use(express.json());


===  الخلاصة ===
// استخدام express.urlencoded() لتحليل بيانات URL-encoded
app.use(express.urlencoded({ extended: false }));


بودي بارسر هو أداة أساسية لتطوير تطبيقات ويب باستخدام Node.js و Express.js.  من خلال فهم الأنواع المختلفة من بودي بارسر وكيفية استخدامها، يمكنك معالجة بيانات الطلب الواردة بسهولة وكفاءة.  باتباع أفضل الممارسات، يمكنك التأكد من أن تطبيقك آمن وموثوق.
// ...
```


=== مصادر إضافية ===
## الخلاصة


*  [[Express.js Documentation]]: [https://expressjs.com/](https://expressjs.com/)
`body-parser` هي حزمة Node.js أساسية لتطبيقات الويب التي تحتاج إلى معالجة بيانات الطلبات الواردة. يوفر `body-parser` وظائف لتحليل أنواع مختلفة من البيانات، مما يجعل تطبيقك أكثر مرونة وأمانًا. من خلال فهم كيفية استخدام `body-parser` بشكل صحيح، يمكنك بناء تطبيقات ويب قوية وقابلة للتطوير.
*  [[Node.js Documentation]]: [https://nodejs.org/](https://nodejs.org/)
*  [[RESTful API Design Best Practices]]: [https://restfulapi.net/](https://restfulapi.net/)


=== روابط لمواضيع ذات صلة ===
## روابط ذات صلة


*  [[Node.js]]
*  [[Node.js]]: بيئة تشغيل JavaScript.
*  [[Express.js]]
*  [[Express.js]]: إطار عمل ويب لـ Node.js.
*  [[واجهات برمجة التطبيقات (APIs)]]
*  [[HTTP]]: بروتوكول نقل النص التشعبي.
*  [[XSS (Cross-Site Scripting)]]
*  [[JSON]]: تنسيق تبادل البيانات.
*  [[SQL Injection]]
*  [[URL Encoding]]: طريقة لترميز البيانات في عنوان URL.
*  [[Binary Options Trading Strategies]]: [[Straddle Strategy]], [[Butterfly Spread]], [[Call Spread]], [[Put Spread]], [[High/Low Option]], [[Touch/No Touch Option]].
*  [[الخوادم]]: أجهزة أو برامج توفر خدمات للعملاء.
*  [[Technical Analysis]]: [[Moving Averages]], [[Bollinger Bands]], [[Relative Strength Index (RSI)]], [[MACD]], [[Fibonacci Retracement]].
*  [[حقن SQL]]: نوع من الهجمات الأمنية.
*  [[Trading Volume Analysis]]: [[On Balance Volume (OBV)]], [[Volume Price Trend (VPT)]].
*  [[XSS]]: نوع من الهجمات الأمنية.
*  [[Binary Options Indicators]]: [[Binary Option Robot]], [[Binary Options Auto Trader]].
*  [[التحقق من صحة البيانات]]: عملية التأكد من أن البيانات المدخلة صحيحة.
*  [[Market Trends]]: [[Uptrend]], [[Downtrend]], [[Sideways Trend]].
[[HTTPS]]: بروتوكول نقل النص التشعبي الآمن.
*  [[Risk Management in Binary Options]]: [[Position Sizing]], [[Stop-Loss Orders]].
[[استراتيجيات التداول بالخيارات الثنائية]]: [[60-second binary options]]، [[boundary options]]، [[high/low options]]، [[touch/no touch options]]، [[range options]]، [[pair options]]
*  [[Candlestick Patterns]]: [[Doji]], [[Engulfing Pattern]], [[Hammer]].
*  [[التحليل الفني]]: [[Moving Averages]]، [[MACD]]، [[RSI]]، [[Bollinger Bands]]، [[Fibonacci Retracements]]
*  [[Option Chain Analysis]]: [[Implied Volatility]], [[Delta]].
*  [[تحليل حجم التداول]]: [[On Balance Volume (OBV)]]، [[Volume Price Trend (VPT)]]
*  [[Expiry Time]]: [[Short-Term Expiry]], [[Long-Term Expiry]].
*  [[مؤشرات الخيارات الثنائية]]: [[Binary Option Robot]]، [[Auto Binary Signals]]
*  [[Payout Percentage]]: [[High Payout]], [[Low Payout]].
*  [[اتجاهات السوق]]: [[Uptrend]]، [[Downtrend]]، [[Sideways Trend]]
*  [[Binary Options Brokers]]: [[Regulated Brokers]], [[Unregulated Brokers]].
*  [[استراتيجيات إدارة المخاطر]]: [[Martingale]]، [[Anti-Martingale]]، [[Fixed Fractional]]
*  [[Trading Psychology]]: [[Fear and Greed]], [[Discipline]].
*  [[الرافعة المالية]]: مفهوم في التداول.
*  [[Margin Trading]]: [[Leverage]], [[Risk of Margin]].
*  [[التقلب]]: مقياس لتغيرات الأسعار.
*  [[Hedging Strategies]]: [[Reverse Trading]], [[Diversification]].
*  [[تنويع المحفظة]]: استراتيجية لتقليل المخاطر.
[[News Trading]]: [[Economic Calendar]], [[Market Sentiment]].
*  [[التحليل الأساسي]]: تقييم القيمة الجوهرية لأصل.
*  [[Algorithmic Trading]]: [[Automated Trading Systems]], [[Backtesting]].
*  [[التحليل النفسي]]: دراسة سلوك المتداولين.
*   [[Time Management]]: [[Optimal Trading Hours]], [[Avoiding Overtrading]].
*  [[الرسوم البيانية]]: تمثيل مرئي لبيانات الأسعار.
*   [[Tax Implications]]: [[Capital Gains Tax]], [[Tax Reporting]].
*  [[أوامر التداول]]: [[Market Order]]، [[Limit Order]]، [[Stop-Loss Order]]
*   [[Demo Accounts]]: [[Practice Trading]], [[Strategy Testing]].
*  [[تداول الخوارزمي]]: استخدام برامج للتداول.
*   [[Forex and Binary Options Correlation]]: [[Currency Pairs]], [[Market Movements]].
*   [[التحوط]]: استراتيجية لتقليل المخاطر.
*   [[Volatility Trading]]: [[VIX Index]], [[Volatility Strategies]].
*   [[تداول الأخبار]]: التداول بناءً على الأحداث الإخبارية.
*   [[تداول الاتجاه]]: التداول في اتجاه السوق السائد.
*   [[تداول الاختراق]]: التداول عند اختراق مستويات الدعم والمقاومة.
*   [[تداول النطاق]]: التداول في نطاق سعري محدد.


[[Category:الفئة:برمجيات_خوادم_ويب]]
[[Category:الفئة:برمجيات_الخادم]]


== ابدأ التداول الآن ==
== ابدأ التداول الآن ==

Revision as of 16:02, 27 March 2025

center|500px|مثال توضيحي

  1. Body-parser: تحليل بيانات الطلبات في تطبيقات الويب
    1. مقدمة

في عالم تطوير تطبيقات الويب، وخاصة تلك التي تعتمد على Node.js و Express.js، يعتبر التعامل مع بيانات الطلبات الواردة من المستخدمين أمرًا بالغ الأهمية. هذه البيانات قد تكون في أشكال مختلفة، مثل بيانات نموذجية (Form Data)، بيانات JSON، أو بيانات URL المشفرة. هنا يأتي دور `body-parser`، وهي حزمة (package) وسيطة (middleware) تعمل على تحليل هذه البيانات وتحويلها إلى تنسيق يسهل الوصول إليه واستخدامه داخل تطبيقك. هذه المقالة موجهة للمبتدئين وتهدف إلى شرح `body-parser` بتفصيل شامل، بدءًا من المفاهيم الأساسية وصولًا إلى الاستخدامات المتقدمة. سنناقش أيضًا أهمية `body-parser` في سياق الخوادم و بروتوكول HTTP.

    1. ما هو Body-parser؟

`body-parser` هي حزمة Node.js تقوم بتحليل أجسام طلبات HTTP الواردة. بشكل افتراضي، لا يوفر Express.js آلية مدمجة لتحليل أجسام الطلبات. لذلك، نحتاج إلى استخدام حزمة مثل `body-parser` للقيام بذلك. تقوم `body-parser` بتزويد وظائف لتحليل أنواع مختلفة من البيانات، بما في ذلك:

  • **URL-encoded form data:** البيانات التي يتم إرسالها من نماذج HTML باستخدام طريقة POST.
  • **JSON:** تنسيق تبادل البيانات الشائع المستخدم في تطبيقات الويب الحديثة.
  • **Raw:** البيانات الخام، مثل البيانات الثنائية.
  • **Text:** البيانات النصية العادية.
    1. لماذا نستخدم Body-parser؟

هناك عدة أسباب تجعل استخدام `body-parser` ضروريًا:

  • **سهولة الوصول إلى البيانات:** بدون `body-parser`، ستصل بيانات الطلب كـ `Buffer`، وهو تنسيق بيانات ثنائي. `body-parser` يحول هذه البيانات إلى كائنات JavaScript سهلة الاستخدام.
  • **دعم أنواع مختلفة من البيانات:** `body-parser` يوفر دعمًا لتحليل أنواع مختلفة من البيانات، مما يجعل تطبيقك أكثر مرونة.
  • **الأمان:** يمكن لـ `body-parser` المساعدة في حماية تطبيقك من الهجمات عن طريق التحقق من صحة البيانات الواردة.
  • **التكامل مع Express.js:** `body-parser` مصمم للعمل بسلاسة مع Express.js، مما يجعله خيارًا طبيعيًا لتطبيقات Express.js.
    1. تثبيت Body-parser

لتثبيت `body-parser`، استخدم مدير الحزم npm (Node Package Manager):

```bash npm install body-parser ```

    1. استخدام Body-parser في تطبيق Express.js

بعد تثبيت `body-parser`، يمكنك استخدامه في تطبيق Express.js الخاص بك. إليك مثال بسيط:

```javascript const express = require('express'); const bodyParser = require('body-parser');

const app = express();

// استخدام body-parser لتحليل بيانات JSON app.use(bodyParser.json());

// استخدام body-parser لتحليل بيانات URL-encoded app.use(bodyParser.urlencoded({ extended: false }));

app.post('/submit', (req, res) => {

 console.log('اسم المستخدم:', req.body.username);
 console.log('كلمة المرور:', req.body.password);
 res.send('تم استلام البيانات بنجاح!');

});

app.listen(3000, () => {

 console.log('الخادم يعمل على المنفذ 3000');

}); ```

في هذا المثال:

  • نستورد وحدتي `express` و `body-parser`.
  • ننشئ تطبيق Express.js جديدًا.
  • نستخدم `bodyParser.json()` لتحليل بيانات JSON الواردة. سيتم تخزين البيانات المحللة في `req.body`.
  • نستخدم `bodyParser.urlencoded({ extended: false })` لتحليل بيانات URL-encoded الواردة. `extended: false` يستخدم مكتبة `querystring` لتحليل البيانات، بينما `extended: true` يستخدم مكتبة `qs`، وهي أكثر قوة ولكنها قد تكون أبطأ.
  • نحدد مسار POST `/submit` الذي يتعامل مع البيانات المرسلة.
  • في داخل معالج المسار، يمكننا الوصول إلى البيانات المرسلة باستخدام `req.body`.
  • نستمع إلى المنفذ 3000.
    1. أنواع Body-parser المختلفة

`body-parser` يوفر عدة وظائف لتحليل أنواع مختلفة من البيانات. إليك نظرة عامة على بعض الأنواع الأكثر شيوعًا:

      1. 1. bodyParser.json()

يقوم بتحليل بيانات JSON الواردة. عادةً ما تستخدم هذه الوظيفة عندما يرسل العميل بيانات بتنسيق JSON.

مثال:

```javascript app.use(bodyParser.json());

app.post('/api/data', (req, res) => {

 console.log(req.body);
 res.send('تم استلام بيانات JSON');

}); ```

      1. 2. bodyParser.urlencoded({ extended: false })

يقوم بتحليل بيانات URL-encoded الواردة. عادةً ما تستخدم هذه الوظيفة عندما يرسل العميل بيانات من نموذج HTML باستخدام طريقة POST. كما ذكرنا سابقًا، `extended: false` يستخدم مكتبة `querystring` لتحليل البيانات.

مثال:

```javascript app.use(bodyParser.urlencoded({ extended: false }));

app.post('/submit', (req, res) => {

 console.log(req.body);
 res.send('تم استلام بيانات النموذج');

}); ```

      1. 3. bodyParser.urlencoded({ extended: true })

يشبه `bodyParser.urlencoded({ extended: false })`، ولكن يستخدم مكتبة `qs` لتحليل البيانات. `qs` أكثر قوة وتوفر ميزات إضافية، ولكنها قد تكون أبطأ.

مثال:

```javascript app.use(bodyParser.urlencoded({ extended: true }));

app.post('/submit', (req, res) => {

 console.log(req.body);
 res.send('تم استلام بيانات النموذج');

}); ```

      1. 4. bodyParser.raw()

يقوم بتحليل البيانات الخام الواردة. عادةً ما تستخدم هذه الوظيفة عندما تحتاج إلى معالجة البيانات الثنائية أو البيانات التي لا يمكن تحليلها باستخدام الأنواع الأخرى.

مثال:

```javascript app.use(bodyParser.raw());

app.post('/upload', (req, res) => {

 console.log(req.body); // البيانات الخام
 res.send('تم استلام البيانات الخام');

}); ```

      1. 5. bodyParser.text()

يقوم بتحليل البيانات النصية العادية الواردة. عادةً ما تستخدم هذه الوظيفة عندما تحتاج إلى معالجة البيانات النصية التي ليست بتنسيق JSON أو URL-encoded.

مثال:

```javascript app.use(bodyParser.text());

app.post('/message', (req, res) => {

 console.log(req.body); // البيانات النصية
 res.send('تم استلام الرسالة النصية');

}); ```

    1. ترتيب استخدام Body-parser

من المهم ترتيب استخدام `body-parser` بشكل صحيح في تطبيق Express.js الخاص بك. يجب وضع `body-parser` قبل أي مسارات (routes) تحتاج إلى الوصول إلى بيانات الطلب. وإلا، فلن يتم تحليل البيانات قبل وصولها إلى معالج المسار.

مثال:

```javascript const express = require('express'); const bodyParser = require('body-parser');

const app = express();

// يجب وضع body-parser قبل المسارات app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false }));

app.post('/submit', (req, res) => {

 console.log(req.body);
 res.send('تم استلام البيانات');

});

app.listen(3000, () => {

 console.log('الخادم يعمل');

}); ```

    1. اعتبارات الأمان

عند استخدام `body-parser`، من المهم مراعاة بعض اعتبارات الأمان:

  • **التحقق من صحة البيانات:** يجب دائمًا التحقق من صحة البيانات الواردة قبل استخدامها. يمكن أن يساعد ذلك في منع الهجمات مثل حقن SQL وهجمات XSS.
  • **حد حجم الجسم:** يمكنك تحديد حد لحجم جسم الطلب لمنع الهجمات التي تستهدف استهلاك موارد الخادم. يمكنك القيام بذلك باستخدام خيارات `body-parser`.
  • **استخدام HTTPS:** يجب دائمًا استخدام HTTPS لتشفير البيانات المرسلة بين العميل والخادم.
    1. بدائل Body-parser

على الرغم من أن `body-parser` هو خيار شائع، إلا أن هناك بدائل أخرى متاحة. أحد البدائل الشائعة هو `express.json()` و `express.urlencoded()`، وهما وظيفتان مدمجتان في Express.js اعتبارًا من الإصدار 4.16.0. هاتان الوظيفتان توفران نفس الوظائف الأساسية التي يوفرها `body-parser`.

مثال:

```javascript const express = require('express');

const app = express();

// استخدام express.json() لتحليل بيانات JSON app.use(express.json());

// استخدام express.urlencoded() لتحليل بيانات URL-encoded app.use(express.urlencoded({ extended: false }));

// ... ```

    1. الخلاصة

`body-parser` هي حزمة Node.js أساسية لتطبيقات الويب التي تحتاج إلى معالجة بيانات الطلبات الواردة. يوفر `body-parser` وظائف لتحليل أنواع مختلفة من البيانات، مما يجعل تطبيقك أكثر مرونة وأمانًا. من خلال فهم كيفية استخدام `body-parser` بشكل صحيح، يمكنك بناء تطبيقات ويب قوية وقابلة للتطوير.

    1. روابط ذات صلة

ابدأ التداول الآن

سجل في IQ Option (الحد الأدنى للإيداع $10) افتح حساباً في Pocket Option (الحد الأدنى للإيداع $5)

انضم إلى مجتمعنا

اشترك في قناة Telegram الخاصة بنا @strategybin للحصول على: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات باتجاهات السوق ✓ مواد تعليمية للمبتدئين

Баннер