طرق HTTP
يربط openFetch كل مساعد بـ fetch مع دمج الافتراضيات والمعترضات والوسيط. المثال أدناه يفترض api من createClient({ baseURL: "https://api.example.com" }).
نوع الإرجاع
unwrapResponse: false(الافتراضي):Promise<OpenFetchResponse<T>>يحتوي{ data, status, statusText, headers, config }.unwrapResponse: true:Promise<T>— الجسم المفسَّر فقط.
يمكن ضبط unwrapResponse على العميل أو لكل طلب عبر كائن config الاختياري.
GET
التوقيع: get(url, config?)
للقراءات الآمنة. سلسلة الاستعلام تُبنى من params.
const res = await api.get("/v1/items", {
params: { page: 2, tag: "news" },
});HEAD وOPTIONS بنفس النمط: head(url, config?)، options(url, config?).
POST
التوقيع: post(url, data?, config?)
dataاختياري. الكائنات العادية (وليستFormDataأوBlob…) تُسلسل JSON ويُضافcontent-type: application/jsonإن لم تضبط رأس Content-Type.- يمكن حذف
dataواستخدامbody/ الرؤوس فيconfig.
await api.post("/v1/posts", { title: "مرحبا", body: "…" });FormData
const fd = new FormData();
fd.append("file", fileBlob, "photo.jpg");
await api.post("/v1/upload", fd);PUT
التوقيع: put(url, data?, config?)
نفس قواعد التسلسل مثل POST. غالباً لاستبدال مورد بالكامل.
await api.put("/v1/users/me", { name: "آدم", theme: "dark" });PATCH
التوقيع: patch(url, data?, config?)
مثل PUT من ناحية التسلسل؛ دلالياً للتحديثات الجزئية.
await api.patch("/v1/users/me", { theme: "light" });DELETE
التوقيع: delete(url, config?)
لا وسيط data؛ مرّر الحمولة عبر config.data أو config.body إن احتاجت واجهتك جسم DELETE.
await api.delete("/v1/posts/42");
await api.delete("/v1/posts/bulk", { data: { ids: [1, 2, 3] } });المستوى الأدنى: request
request(url, config?)request(config)معurlداخل الكائن.
await api.request({
url: "/v1/reports/export",
method: "POST",
responseType: "blob",
});تجاوزات لكل طلب
أي استدعاء يمكن أن يمرّر timeout، signal، headers، unwrapResponse، validateStatus، middlewares، retry، memoryCache، إلخ. راجع الإعدادات.
