تكوين الطلب

هذه هي خيارات التكوين المتاحة لإجراء الطلبات. فقط url مطلوب. ستكون الطلبات افتراضيًا GET إذا لم يتم تحديد method.

{
  // `url` هو عنوان URL للخادم الذي سيتم استخدامه للطلب
  url: '/user',

  // `method` هو طريقة الطلب التي سيتم استخدامها عند إجراء الطلب
  method: 'get', // افتراضي

  // `baseURL` سيتم إضافته إلى `url` إلا إذا كان `url` مطلقًا.
  // يمكن أن يكون مناسبًا تعيين `baseURL` لنموذج من axios لتمرير عناوين URL نسبية
  // إلى طرق ذلك النموذج.
  baseURL: 'https://some-domain.com/api',

  // `transformRequest` يسمح بتغييرات على بيانات الطلب قبل إرسالها إلى الخادم
  // هذا قابل للتطبيق فقط لطرق الطلب 'PUT' و 'POST' و 'PATCH' و 'DELETE'
  // يجب أن ترجع الدالة الأخيرة في المصفوفة سلسلة أو مثيل Buffer أو ArrayBuffer أو
  // FormData أو Stream
  // يمكنك تعديل كائن الرؤوس.
  transformRequest: [function (data, headers) {
    // افعل ما تريد لتحويل البيانات

    return data;
  }],

  // `transformResponse` يسمح بتغييرات على بيانات الاستجابة قبل
  // تمريرها إلى then/catch
  transformResponse: [function (data) {
    // افعل ما تريد لتحويل البيانات

    return data;
  }],

  // `headers` هي الرؤوس المخصصة التي سيتم إرسالها
  headers: {'X-Requested-With': 'XMLHttpRequest'},

  // `params` هي معاملات URL التي سيتم إرسالها مع الطلب
  // يجب أن تكون كائنًا عاديًا أو كائن URLSearchParams
  // ملاحظة: المعاملات التي هي null أو undefined لا يتم عرضها في URL.
  params: {
    ID: 12345
  },

  // `paramsSerializer` هو تكوين اختياري يسمح لك بتخصيص تسلسل `params`.
  paramsSerializer: {

    //دالة ترميز مخصصة ترسل أزواج المفتاح/القيمة بطريقة تكرارية.
    encode?: (param: string): string => { /* قم بعمليات مخصصة هنا وأعد السلسلة المحولة */ },

    // دالة تسلسل مخصصة للمعامل بأكمله. يسمح للمستخدم بتقليد سلوك ما قبل 1.x.
    serialize?: (params: Record<string, any>, options?: ParamsSerializerOptions ),

    //تكوين لتنسيق فهارس المصفوفة في المعاملات.
    indexes: false // ثلاث خيارات متاحة:
    // (1) indexes: null (يؤدي إلى عدم وجود أقواس)،
    // (2) (افتراضي) indexes: false (يؤدي إلى أقواس فارغة)،
    // (3) indexes: true (يؤدي إلى أقواس مع فهارس).
  },

  // `data` هي البيانات التي سيتم إرسالها كجسم الطلب
  // قابل للتطبيق فقط لطرق الطلب 'PUT' و 'POST' و 'DELETE' و 'PATCH'
  // عندما لا يتم تعيين `transformRequest`، يجب أن تكون من أحد الأنواع التالية:
  // - سلسلة، كائن عادي، ArrayBuffer، ArrayBufferView، URLSearchParams
  // - المتصفح فقط: FormData، File، Blob
  // - Node فقط: Stream، Buffer
  data: {
    firstName: 'Fred'
  },

  // بديل بناء جملة لإرسال البيانات إلى الجسم
  // طريقة post
  // يتم إرسال القيمة فقط، وليس المفتاح
  data: 'Country=Brasil&City=Belo Horizonte',

  // `timeout` يحدد عدد المللي ثانية قبل انتهاء مهلة الطلب.
  // إذا استغرق الطلب وقتًا أطول من `timeout`، سيتم إلغاء الطلب.
  timeout: 1000, // الافتراضي هو `0` (لا مهلة)

  // `withCredentials` يشير إلى ما إذا كان يجب إجراء طلبات Access-Control عبر المواقع
  // باستخدام بيانات الاعتماد
  withCredentials: false, // افتراضي

  // `adapter` يسمح بالتعامل المخصص مع الطلبات مما يجعل الاختبار أسهل.
  // أعد وعدًا وأمد باستجابة صالحة (انظر lib/adapters/README.md).
  adapter: function (config) {
    /* ... */
  },

  // `auth` يشير إلى أن يجب استخدام مصادقة HTTP Basic، ويوفر بيانات الاعتماد.
  // سيتم تعيين رأس `Authorization`، مما يتجاوز أي رؤوس مخصصة موجودة
  // `Authorization` التي قمت بتعيينها باستخدام `headers`.
  // يرجى ملاحظة أن مصادقة HTTP Basic فقط قابلة للتكوين من خلال هذا المعامل.
  // لرموز Bearer وما شابه، استخدم رؤوس `Authorization` المخصصة بدلاً من ذلك.
  auth: {
    username: 'janedoe',
    password: 's00pers3cret'
  },

  // `responseType` يشير إلى نوع البيانات التي سيرد بها الخادم
  // الخيارات هي: 'arraybuffer'، 'document'، 'json'، 'text'، 'stream'
  // المتصفح فقط: 'blob'
  responseType: 'json', // افتراضي

  // `responseEncoding` يشير إلى الترميز المستخدم لفك تشفير الاستجابات (Node.js فقط)
  // ملاحظة: يتم تجاهله لـ `responseType` من 'stream' أو طلبات جانب العميل
  responseEncoding: 'utf8', // افتراضي

  // `xsrfCookieName` هو اسم ملف تعريف الارتباط المستخدم كقيمة لرمز xsrf
  xsrfCookieName: 'XSRF-TOKEN', // افتراضي

  // `xsrfHeaderName` هو اسم رأس http الذي يحمل قيمة رمز xsrf
  xsrfHeaderName: 'X-XSRF-TOKEN', // افتراضي

  // `onUploadProgress` يسمح بالتعامل مع أحداث التقدم للتحميلات
  // المتصفح فقط
  onUploadProgress: function (progressEvent) {
    // افعل ما تريد مع حدث التقدم الأصلي
  },

  // `onDownloadProgress` يسمح بالتعامل مع أحداث التقدم للتنزيلات
  // المتصفح فقط
  onDownloadProgress: function (progressEvent) {
    // افعل ما تريد مع حدث التقدم الأصلي
  },

  // `maxContentLength` يحدد الحد الأقصى لحجم محتوى استجابة http بالبايتات المسموح به في node.js
  maxContentLength: 2000,

  // `maxBodyLength` (خيار Node فقط) يحدد الحد الأقصى لحجم محتوى طلب http بالبايتات المسموح به
  maxBodyLength: 2000,

  // `validateStatus` يحدد ما إذا كان يجب حل أو رفض الوعد لرمز حالة استجابة HTTP معين.
  // إذا أعاد `validateStatus` `true` (أو تم تعيينه إلى `null`
  // أو `undefined`)، سيتم حل الوعد؛ وإلا، سيتم رفض الوعد.
  validateStatus: function (status) {
    return status >= 200 && status < 300; // افتراضي
  },

  // `maxRedirects` يحدد الحد الأقصى لعدد عمليات إعادة التوجيه التي يجب اتباعها في node.js.
  // إذا تم تعيينه إلى 0، لن يتم اتباع أي عمليات إعادة توجيه.
  maxRedirects: 5, // افتراضي

  // `socketPath` يحدد مقبس UNIX ليتم استخدامه في node.js.
  // على سبيل المثال '/var/run/docker.sock' لإرسال الطلبات إلى daemon docker.
  // يمكن تحديد إما `socketPath` أو `proxy` فقط.
  // إذا تم تحديد كليهما، يتم استخدام `socketPath`.
  socketPath: null, // افتراضي

  // `httpAgent` و `httpsAgent` يحددان وكيلًا مخصصًا ليتم استخدامه عند إجراء طلبات http
  // و https على التوالي، في node.js. هذا يسمح بإضافة خيارات مثل
  // `keepAlive` التي لا يتم تمكينها افتراضيًا قبل Node.js v19.0.0. بعد Node.js
  // v19.0.0، لم تعد بحاجة إلى تخصيص الوكيل لتمكين `keepAlive` لأن
  // `http.globalAgent` لديه `keepAlive` ممكّن افتراضيًا.
  httpAgent: new http.Agent({ keepAlive: true }),
  httpsAgent: new https.Agent({ keepAlive: true }),

  // `proxy` يحدد اسم المضيف، المنفذ، وبروتوكول خادم الوكيل.
  // يمكنك أيضًا تعريف وكيلك باستخدام متغيرات البيئة التقليدية `http_proxy` و
  // `https_proxy`. إذا كنت تستخدم متغيرات البيئة
  // لتكوين الوكيل الخاص بك، يمكنك أيضًا تعريف متغير بيئة `no_proxy` كقائمة مفصولة بفواصل من النطاقات التي يجب عدم وكالتها.
  // استخدم `false` لتعطيل الوكلاء، متجاهلاً متغيرات البيئة.
  // `auth` يشير إلى أن يجب استخدام مصادقة HTTP Basic للاتصال بالوكيل، و
  // يوفر بيانات الاعتماد.
  // سيتم تعيين رأس `Proxy-Authorization`، مما يتجاوز أي رؤوس مخصصة موجودة
  // `Proxy-Authorization` التي قمت بتعيينها باستخدام `headers`.
  // إذا كان خادم الوكيل يستخدم HTTPS، فيجب عليك تعيين البروتوكول إلى `https`.
  proxy: {
    protocol: 'https',
    host: '127.0.0.1',
    port: 9000,
    auth: {
      username: 'mikeymike',
      password: 'rapunz3l'
    }
  },

  // `cancelToken` يحدد رمز إلغاء يمكن استخدامه لإلغاء الطلب
  // (انظر قسم الإلغاء أدناه للتفاصيل)
  cancelToken: new CancelToken(function (cancel) {
  }),

  // `decompress` يشير إلى ما إذا كان يجب فك ضغط جسم الاستجابة
  // تلقائيًا. إذا تم تعيينه إلى `true` سيتم أيضًا إزالة رأس 'content-encoding'
  // من كائنات الاستجابات لجميع الاستجابات المفككة ضغطها
  // - Node فقط (XHR لا يمكنه إيقاف فك الضغط)
  decompress: true // افتراضي

}