Fetch API
```wiki
واجهة برمجة التطبيقات Fetch API: دليل شامل للمبتدئين
مقدمة
واجهة برمجة التطبيقات Fetch API هي أداة قوية في جافاسكريبت تسمح لك بإجراء طلبات شبكة للحصول على الموارد من الخادم. تعتبر بديلاً حديثًا لـ XMLHttpRequest (XHR)، وتقدم واجهة أكثر مرونة وسهولة في الاستخدام. Fetch API ضرورية لتطوير تطبيقات الويب الديناميكية التي تتفاعل مع الخوادم، سواء للحصول على البيانات أو إرسالها. هذا المقال موجه للمبتدئين ويهدف إلى شرح Fetch API بالتفصيل، مع أمثلة عملية وتوضيحات شاملة. كما سنربط هذا المفهوم بعالم الخيارات الثنائية من خلال شرح كيف يمكن استخدام Fetch API للحصول على بيانات السوق الحية.
لماذا Fetch API؟
قبل ظهور Fetch API، كان XMLHttpRequest هو الطريقة القياسية لإجراء طلبات الشبكة في جافاسكريبت. ومع ذلك، كان XHR معقدًا ويتطلب الكثير من التعليمات البرمجية لإنجاز مهام بسيطة. Fetch API تقدم العديد من المزايا مقارنة بـ XHR:
- بساطة الاستخدام: واجهة برمجة التطبيقات Fetch API أكثر وضوحًا وسهولة في الاستخدام.
- الوعود (Promises): تستخدم Fetch API الوعود، مما يجعل التعامل مع العمليات غير المتزامنة أسهل وأكثر قابلية للقراءة. فهم الوعود أمر بالغ الأهمية لاستخدام Fetch API بفعالية.
- مرونة أكبر: توفر Fetch API مرونة أكبر في تكوين الطلبات والتعامل مع الاستجابات.
- دعم تدفق البيانات: تدعم Fetch API تدفق البيانات، مما يسمح لك بمعالجة البيانات أثناء تنزيلها.
أساسيات Fetch API
التركيب الأساسي لـ Fetch API هو `fetch()`. تقبل هذه الدالة عنوان URL للمورد الذي تريد طلبه وتعيد وعدًا (Promise) يمثل النتيجة النهائية للطلب.
بناء الجملة
```javascript fetch(url, options)
.then(response => { // التعامل مع الاستجابة }) .catch(error => { // التعامل مع الأخطاء });
```
- `url`: عنوان URL للمورد الذي تريد طلبه.
- `options`: كائن اختياري يحتوي على خيارات إضافية للطلب، مثل طريقة الطلب (GET، POST، PUT، DELETE)، الرؤوس (headers)، ووضع الجسم (body).
مثال بسيط
```javascript fetch('https://api.example.com/data')
.then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); // أو response.text() إذا كانت الاستجابة نصية }) .then(data => { console.log(data); // التعامل مع البيانات المسترجعة }) .catch(error => { console.error('There has been a problem with your fetch operation:', error); });
```
في هذا المثال، نقوم بإجراء طلب GET إلى `https://api.example.com/data`. عندما يتم استلام الاستجابة، نتحقق من حالة الاستجابة. إذا كانت الحالة ليست "ok" (بين 200 و 299)، فإننا نلقي خطأ. إذا كانت الحالة جيدة، فإننا نقوم بتحويل الاستجابة إلى JSON باستخدام `response.json()` ثم نعالج البيانات. في حالة حدوث أي خطأ، فإننا نلتقطه في كتلة `catch` ونعرض رسالة الخطأ.
خيارات الطلب (Request Options)
تسمح لك خيارات الطلب بتكوين طلب Fetch API بشكل أكثر دقة. بعض الخيارات الشائعة تشمل:
- `method`: تحديد طريقة الطلب (GET، POST، PUT، DELETE، إلخ.). القيمة الافتراضية هي GET.
- `headers`: تحديد رؤوس الطلب. يمكن استخدام الرؤوس لإرسال معلومات إضافية إلى الخادم، مثل نوع المحتوى أو رمز التفويض.
- `body`: تحديد جسم الطلب. يتم استخدام جسم الطلب لإرسال البيانات إلى الخادم، على سبيل المثال عند إجراء طلب POST.
- `mode`: تحديد وضع الطلب (cors، no-cors، same-origin).
- `credentials`: تحديد ما إذا كان يجب إرسال بيانات الاعتماد (مثل ملفات تعريف الارتباط) مع الطلب.
- `cache`: تحديد كيفية تخزين الطلب مؤقتًا.
مثال على استخدام خيارات الطلب
```javascript const options = {
method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: 'John Doe', email: 'john.doe@example.com' })
};
fetch('https://api.example.com/users', options)
.then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(data => { console.log(data); }) .catch(error => { console.error('There has been a problem with your fetch operation:', error); });
```
في هذا المثال، نقوم بإجراء طلب POST إلى `https://api.example.com/users` مع تحديد طريقة الطلب إلى POST، وتحديد رأس `Content-Type` إلى `application/json`، وإرسال جسم الطلب كـ JSON.
التعامل مع الاستجابات (Response Handling)
عندما يتم استلام الاستجابة من الخادم، يمكنك استخدام خصائص ودوال كائن `response` للتعامل معها.
- `response.ok`: خاصية منطقية تشير إلى ما إذا كانت حالة الاستجابة ناجحة (بين 200 و 299).
- `response.status`: خاصية عددية تمثل رمز حالة الاستجابة.
- `response.statusText`: خاصية نصية تمثل رسالة حالة الاستجابة.
- `response.headers`: كائن يحتوي على رؤوس الاستجابة.
- `response.body`: كائن قابل للقراءة يمثل جسم الاستجابة.
- `response.json()`: دالة تقوم بتحويل جسم الاستجابة إلى JSON.
- `response.text()`: دالة تقوم بتحويل جسم الاستجابة إلى نص.
- `response.blob()`: دالة تقوم بتحويل جسم الاستجابة إلى كائن Blob.
- `response.arrayBuffer()`: دالة تقوم بتحويل جسم الاستجابة إلى كائن ArrayBuffer.
Fetch API والخيارات الثنائية
يمكن استخدام Fetch API للحصول على بيانات السوق الحية اللازمة لاتخاذ قرارات تداول مستنيرة في الخيارات الثنائية. على سبيل المثال، يمكنك استخدام Fetch API للحصول على أسعار الأصول، وحجم التداول، والمؤشرات الفنية.
مثال الحصول على أسعار الأصول
لنفترض أنك تريد الحصول على سعر سهم Apple (AAPL) من واجهة برمجة تطبيقات مالية. يمكنك استخدام Fetch API على النحو التالي:
```javascript fetch('https://api.financialdata.com/aapl') // مثال لواجهة برمجة تطبيقات مالية
.then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(data => { const price = data.price; console.log('سعر سهم Apple:', price); }) .catch(error => { console.error('There has been a problem with your fetch operation:', error); });
```
بعد الحصول على السعر، يمكنك استخدامه في استراتيجيات التداول الخاصة بك، مثل استراتيجية الاتجاه أو استراتيجية الاختراق.
التعامل مع الأخطاء
من المهم التعامل مع الأخطاء التي قد تحدث أثناء إجراء طلب Fetch API. يمكن أن تحدث الأخطاء بسبب عدة أسباب، مثل:
- مشاكل في الشبكة.
- عنوان URL غير صالح.
- خطأ في الخادم.
- أخطاء في تحليل الاستجابة.
يمكنك التعامل مع الأخطاء باستخدام كتلة `catch` في Promise.
مثال على التعامل مع الأخطاء
```javascript fetch('https://api.example.com/data')
.then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(data => { console.log(data); }) .catch(error => { console.error('There has been a problem with your fetch operation:', error); // يمكنك هنا عرض رسالة خطأ للمستخدم أو تسجيل الخطأ في سجلات التطبيق. });
```
اعتبارات الأمان
عند استخدام Fetch API، من المهم مراعاة اعتبارات الأمان التالية:
- CORS (Cross-Origin Resource Sharing): تأكد من أن الخادم الذي تستدعيه يسمح بطلبات من نطاقك.
- التحقق من صحة البيانات: تحقق من صحة البيانات التي تتلقاها من الخادم قبل استخدامها في تطبيقك.
- تجنب حقن التعليمات البرمجية: تجنب حقن التعليمات البرمجية الضارة في طلباتك أو استجاباتك.
Fetch API ومكتبات أخرى
هناك العديد من المكتبات التي تبني على Fetch API وتوفر ميزات إضافية، مثل:
- Axios: مكتبة شائعة لإجراء طلبات HTTP.
- Superagent: مكتبة أخرى لإجراء طلبات HTTP.
خلاصة
Fetch API هي أداة قوية ومرنة لإجراء طلبات الشبكة في جافاسكريبت. إنها بديل حديث لـ XMLHttpRequest وتقدم واجهة أكثر سهولة في الاستخدام ومرونة. سواء كنت تقوم بتطوير تطبيق ويب بسيط أو تطبيق ويب معقد، فإن Fetch API هي أداة أساسية يجب أن يكون لديك في مجموعة أدواتك. وفي سياق التحليل الفني وتداول الخيارات الثنائية، تمكنك Fetch API من الحصول على البيانات الحية التي تحتاجها لاتخاذ قرارات تداول مستنيرة.
مصادر إضافية
- MDN Web Docs - Fetch API: [1](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
- W3Schools - Fetch API: [2](https://www.w3schools.com/js/js_fetch_api.asp)
روابط ذات صلة (استراتيجيات، تحليل، مؤشرات)
- استراتيجية مارتينجال
- استراتيجية D'Alembert
- استراتيجية فيبوناتشي
- استراتيجية بولينجر باند
- استراتيجية المتوسطات المتحركة
- تحليل الشموع اليابانية
- تحليل حجم التداول
- مؤشر القوة النسبية (RSI)
- مؤشر الماكد (MACD)
- مؤشر ستوكاستيك
- التحليل الأساسي
- التحليل الفني
- إدارة المخاطر في الخيارات الثنائية
- الرافعة المالية في الخيارات الثنائية
- التقلبات في الخيارات الثنائية
- نموذج الرأس والكتفين
- نموذج القمة المزدوجة
- نموذج القاع المزدوج
- الشموع الدوجي
- الشموع المطرقة
- الشموع الشبحية
- الشموع الابتلاعية
- الشموع النفاذة
- استراتيجية الاختراق
- استراتيجية الاتجاه
- استراتيجية التداول المتأرجح
- استراتيجية سكالبينج
```
ابدأ التداول الآن
سجّل في IQ Option (الحد الأدنى للإيداع 10 دولار) افتح حساباً في Pocket Option (الحد الأدنى للإيداع 5 دولار)
انضم إلى مجتمعنا
اشترك في قناة Telegram الخاصة بنا @strategybin لتصلك: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات اتجاهات السوق ✓ مواد تعليمية للمبتدئين