البدء
التثبيت
الحزمة على npm: @hamdymohamedak/openfetch. المستودع: openfetch-js/OpenFetch على GitHub.
bash
npm install @hamdymohamedak/openfetchالحزمة ESM فقط ("type": "module"). استورد من "@hamdymohamedak/openfetch".
مسارات فرعية (تقليل الحجم عند التجميع)
ts
import openFetch from "@hamdymohamedak/openfetch";
import { retry, timeout } from "@hamdymohamedak/openfetch/plugins";
import { createFluentClient } from "@hamdymohamedak/openfetch/sugar";راجع الإضافات والواجهة السلسة. Node 18+ أو أي بيئة فيها fetch وAbortController.
المثيل الافتراضي
التصدير الافتراضي هو عميل أُنشئ بـ createClient() دون قيم افتراضية أولية:
ts
import openFetch from "@hamdymohamedak/openfetch";
const res = await openFetch.get("https://api.example.com/v1/users");
// res من نوع OpenFetchResponse: { data, status, statusText, headers, config }عميل مسمّى بـ createClient / create
createClient وcreate اسمان لنفس الدالة. مرّر القيم الافتراضية الأولية؛ يمكنك لاحقاً تعديل client.defaults.
ts
import { createClient } from "@hamdymohamedak/openfetch";
const api = createClient({
baseURL: "https://api.example.com",
headers: { Authorization: "Bearer <token>" },
timeout: 10_000,
unwrapResponse: true,
});
const users = await api.get("/v1/users");
// عند unwrapResponse: true، users هي الجسم المفسَّر فقط (T) وليس OpenFetchResponseمساعدات HTTP (نظرة سريعة)
كل دالة تُرجع Promise<OpenFetchResponse<T>> ما لم يكن unwrapResponse مفعّلاً، وعندها Promise<T>.
| الدالة | ملاحظات |
|---|---|
request(urlOrConfig, config?) | سلسلة url أو URL أو كائن إعداد كامل |
get، head، options | عنوان + إعداد اختياري |
post، put، patch | عنوان، data اختياري، إعداد اختياري — الكائنات العادية تُسلسل JSON مع content-type إن لم تُضبط |
delete | عنوان + إعداد اختياري |
العنوان مطلوب: إذا لم يكن للإعداد المدمج url، يرمي العميل: openfetch: `url` is required.
لأمثلة تفصيلية لكل فعل، راجع طرق HTTP.
تسجيل الوسيط
ts
import { createClient, createRetryMiddleware } from "@hamdymohamedak/openfetch";
const client = createClient({
middlewares: [createRetryMiddleware()],
});
// أو لاحقاً:
client.use(createRetryMiddleware({ maxAttempts: 5 }));راجع المعترضات والوسيط وإعادة المحاولة والتخزين المؤقت.
