Skip to content

openFetchعميل HTTP مبني على fetch

معترضات، وسيط، JSON بمخطط Standard Schema، خطافات دورة إعادة المحاولة، وتخزين مؤقت — fetch فقط لـ Node 18+ والمتصفحات والحافة.

TS

Open in your assistant

Pre-fills a prompt that points at the docs site and . If the message box is empty, paste the prompt from the address bar or type it manually — URL prefill behavior depends on the product.

نظرة سريعة

أبرز ما في openFetch الآن: التحقق من JSON عبر Standard Schema (jsonSchema و**.json(schema)** في الـ fluent)، throwHttpErrors بأسلوب Ky مع validateStatus, تمرير Request الأصلي إلى request()، مصفوفة init[] متزامنة على الإعداد المدمج، ERR_TIMEOUT منفصل عن إلغاء المستخدم، خطافات إعادة المحاولة onAfterResponse / onBeforeRetry مع OpenFetchForceRetry, Accept مقترح من responseType, وtype guards (isHTTPError، isTimeoutError، isSchemaValidationError). قائمة الميزات ومسار الطلب الكامل ←

المعيارopenFetchمكتبتكAxiosky
طبقة النقلfetchXHR (افتراضي في المتصفح)fetch
تبعيات وقت التشغيلصفرمجموعة خاصةصفر
مثيل وإعدادات افتراضية createClient axios.create ky.create
معترضات الطلب والاستجابة الاثنان الاثنان خطافات فقط
وسيط قابل للتجميع use()
تحويل الطلب / تحويل الاستجابة مصفوفات مرتبة في الإعداد سلسلة تحويل مدمجة خطافات (لا مصفوفات)
JSON مُتحقق (Standard Schema) jsonSchema وـ .json(schema) يدوي (مثلاً في transform) .json(schema)
بوابة حالة HTTP validateStatus و throwHttpErrors validateStatus throwHttpErrors
Request أصلي + init متزامن request(Request) + init[] عبر الإعداد (لا init[]) Request وخطافات init
إعادة محاولة مع تراجع (اختياري) إضافات + onAfterResponse / ForceRetry منفصل Retry وخطاف بعد الاستجابة
تخزين مؤقت للذاكرة (TTL / SWR) createCacheMiddleware ومخزن طرف ثالث أو يدوي
استجابة موحّدة للعميل OpenFetchResponse AxiosResponse Response / مُحلّى
أخطاء، سجلات آمنة، حماية URL toShape، إخفاء query، قناع رؤوس، حماية URL AxiosError؛ إخفاء يدوي أخطاء مُنمّاة؛ إخفاء يدوي
مهلة مقابل إلغاء المستخدم ERR_TIMEOUT و ERR_CANCELED غالباً AbortError للاثنين TimeoutError و AbortError
عميل متسلسل + memo createFluentClient و .memo() تسلسل أصلي (لا memo مدمج)
مفتاح Idempotency لإعادة POST ترويسة تلقائية اختيارية يدوي أو معترضات يدوي
مناسب للحافة و RSC يستخدم fetch محوّلات fetch

الحجم يعتمد على الدمج والاستيراد. openFetch يضيف طبقة عملية فوق fetch: مخطط JSON، بوابة حالات، Request وinit، وإعادة محاولة مع خطافات — راجع صفحة «الميزات ومسار الطلب» للتفاصيل.

نفس الطلب — ثلاثة عملاء HTTP

واجهة فئات EscuelaJS تُرجع مصفوفة JSON. أدناه: openFetch، Axios، وky.

openFetch — إعدادات مشتركة، استجابة منظمة، وجاهزية للمعترضات والوسيط:

ts
import openFetch from "@hamdymohamedak/openfetch";

const res = await openFetch.get(
  "https://api.escuelajs.co/api/v1/categories"
);
// res.data, res.status, res.headers, res.config

Axios — واجهة مألوفة؛ نقل افتراضي مختلف في المتصفح:

ts
import axios from "axios";

const res = await axios.get(
  "https://api.escuelajs.co/api/v1/categories"
);
// res.data, res.status, res.headers, res.config

ky — واجهة صغيرة فوق fetch:

ts
import ky from "ky";

const data = await ky
  .get("https://api.escuelajs.co/api/v1/categories")
  .json();

قياس حي في المتصفح

اضغط تشغيل القياس (٥ جولات): في كل جولة يُنفَّذ ثلاثة طلبات GET متوازية (openFetch، Axios، ky) مع تعطيل التخزين المؤقت حيثما أمكن. البطاقات تعرض آخر قياس، المتوسط، الأدنى، والأعلى؛ القائمة تُرتّب حسب متوسط الزمن (الأقل = أسرع في هذه الجلسة). الأسرع يحصل على شريط صغير — مع ذلك اقرأ التنبيه: الشبكة هي المهيمنة؛ هذا لقطة من جلستك وليس حكماً أدائياً مطلقاً.

لماذا يضيف المطورون طبقة عميل؟

  • إعدادات موحّدةbaseURL، ترويسات، مهلة زمنية، وunwrapResponse لمثيل createClient.
  • سلوك عابر للطلبات — مصادقة، تتبع، أعلام ميزات، وتطبيع أخطاء عبر المعترضات والوسيط.
  • مرونة — سياسات إعادة محاولة وتخزين مؤقت دون تكرار في كل استدعاء.
  • أخطاء متوقعة — ربط أعطال HTTP والشبكة بأخطاء مُنمّاة بدلاً من try/catch العشوائي.

openFetch يستهدف الفرق التي تريد ذلك مع البقاء على fetch حيث يوفّره النظام.

صفحات التوثيق

  1. البدء — التثبيت، التصدير الافتراضي، createClient، أول طلبات
  2. طرق HTTP — GET وPOST وPUT وPATCH وDELETE وrequest()
  3. React و Vue — الخطافات، التركيبات، العملاء المشتركون، ملاحظات RSC
  4. الإعدادات — خيارات الطلب، rawResponse، دمج الإعدادات
  5. الإضافات والواجهة السلسة — مسارات plugins وsugar
  6. المعترضات والوسيط — ترتيب التنفيذ، use()، وسيط مخصص
  7. إعادة المحاولة والتخزين المؤقت — الميزانية، مفاتيح idempotency، التخزين المؤقت
  8. الأخطاء والأمانOpenFetchError، الرموز، التسجيل الآمن، assertSafeHttpUrl

واجهة برمجة التطبيقات العامة (ملخص)

التصديرالدور
الافتراضيمثيل جاهز من createClient()
createClient / createعميل جديد مع initialDefaults اختيارية
createFluentClientسلاسل URL مرنة (من /sugar)
retry, timeout, hooks, debug, strictFetchإضافات وسيط (من /plugins)
OpenFetchError، isOpenFetchErrorأخطاء مُنمّاة + حارس النوع
InterceptorManagerمكدس المعترضات
createRetryMiddlewareمصنع وسيط إعادة المحاولة
MemoryCacheStore، createCacheMiddleware، appendCacheKeyVaryHeadersتخزين مؤقت في الذاكرة
الأنواعOpenFetchConfig، OpenFetchResponse، Middleware، إلخ.
assertSafeHttpUrlحارس اختياري على نمط SSRF

المتطلبات

Node.js 18+ أو أي بيئة فيها fetch وAbortController.

المصدر والحزمة

لغات أخرى

تصفح كل الترجمات.

MIT · @hamdymohamedak/openfetch