ForHosting KIT · أدوات المطورين

فحص تنسيق مفتاح عدم التكرار

يأخذ فحص تنسيق مفتاح عدم التكرار السلسلة النصية التي تنوي إرسالها كترويسة Idempotency-Key ويخبرك ما إذا كانت تتبع إرشادات التنسيق الشائعة قبل أن تصل إلى واجهة برمجة التطبيقات أصلًا.

● Betaمجاني · داخل متصفحك
استخدمها من الويبAPIالبريدTelegramالتطبيق قريبًا

يتحقق من أن المفتاح غير فارغ، وأنه طويل بما يكفي ليكون فريدًا عمليًا، وأنه لا يتجاوز حدًّا أقصى معقولًا للطول، وأن كل حرف آمن في URL بحيث ينجو المفتاح عبر الترويسات والسجلات وسلاسل الاستعلام دون مفاجآت في الترميز. ترسل سلسلة واحدة فتحصل على علامة valid واضحة والطول المقاس وقائمة بالمشكلات المحددة عند وجود خلل.

لماذا تحتاج مفاتيح عدم التكرار إلى فحص تنسيق

توجد مفاتيح عدم التكرار كي يُعالَج الطلب المُعاد — دفعة أُرسلت مرتين، أو طلب أُنشئ بعد انتهاء مهلة — مرة واحدة فقط. لكن الأمان الذي تعد به يعتمد على أن يكون المفتاح نفسه سليم التكوين. فالمفتاح القصير أكثر من اللازم يتصادم مع مفتاح عميل آخر ويزيل التكرار بصمت دامجًا عمليتين مختلفتين في واحدة. والمفتاح الذي يحتوي على أحرف خارج الأبجدية الآمنة في URL يتشوّه في مكان ما بين عميلك والوسيط وخط أنابيب السجلات والخادم، فتصل المحاولة المكررة بسلسلة مختلفة عن الأصلية وتُحتسب مرتين. والمفتاح الفارغ ترفضه معظم واجهات برمجة التطبيقات فورًا، وغالبًا بخطأ عام يستغرق تتبّعه فترة بعد ظهر كاملة. إن تمرير المفتاح عبر فحص تنسيق مفتاح عدم التكرار هذا على حافة نظامك يلتقط أنماط الفشل الثلاثة كلها في وقت التطوير أو في مجموعة الاختبارات أو في تحقق مسبق داخل خدمتك نفسها، بدلًا من أن يظهر في تقرير تسوية بعد أسابيع.

ما الذي يتم التحقق منه بالضبط

يطبّق الفحص إرشادات التنسيق التي توثّقها معالجات الدفع وبرمجيات إزالة التكرار الوسيطة في أغلب الأحيان. أولًا، يجب أن يكون المفتاح سلسلة نصية غير فارغة؛ فالمفتاح الفارغ خطأ وليس تحذيرًا، لأن أي خادم لن يقبله. ثانيًا، الطول: يجب افتراضيًا ألّا يقل المفتاح عن 16 حرفًا، وهو الحد الأدنى الذي تتوقف تحته فرادة المفتاح عن أن تكون معقولة، وألّا يزيد عن 255 حرفًا، وهو السقف الذي تقبله معظم المخازن — وكلا الحدّين قابلان للضبط في كل استدعاء. ثالثًا، الأبجدية: يجب أن ينتمي كل حرف إلى المجموعة غير المحجوزة في RFC 3986 — الحروف والأرقام والشرطة والنقطة والشرطة السفلية والتلدة. هذه الأحرف تعبر ترويسات HTTP ومقاطع URL وناقلات السجلات دون ترميز، وهذا بالضبط هو المسار الذي تسلكه مفاتيح عدم التكرار. وعندما يفشل حرف ما، تعدّد الاستجابة كل حرف مخالف متميز لترى ما إذا كان أحدهم قد أدرج مسافة أو شرطة مائلة أو رمزًا تعبيريًا، وتسمّي مصفوفة issues المشكلة بصيغة مقروءة آليًا: too_short أو too_long أو unsafe_characters.

أين يندرج الفحص في بنيتك التقنية

تدمجه معظم الفرق في موضعين. الأول هو العميل الذي يولّد المفاتيح: فور بنائك مفتاحًا من UUID وطابع زمني ومعرّف مستخدم، تحقّق منه مرة واحدة وسجّل تحذيرًا إن فشل، كي يظهر خطأ المولّد في بيئة الإعداد لا في الإنتاج. الثاني هو اختبار العقود: أرسل دفعة من المفاتيح من كل تكامل تملكه إلى نقطة النهاية في التكامل المستمر، بحيث يُفشِل البناءَ أيُّ تحديث لمكتبة يغيّر سلوك الترميز. نقطة النهاية حتمية وعديمة الحالة — لا يُخزَّن شيء، ولا تُراجَع أي قائمة بالمفاتيح السابقة، والمدخل نفسه ينتج دائمًا المخرج نفسه — أي إن استدعاءها بمفاتيح حقيقية آمن، وبتكلفة $0.002 لكل طلب فهي رخيصة بما يكفي لتشغيلها مع كل نشر. ويعمل التحقق نفسه مجانًا في متصفحك على هذه الصفحة، فيمكن للمطوّر لصق مفتاح مشبوه أثناء حادثة والحصول على الإجابة نفسها التي ستقدّمها واجهة برمجة التطبيقات.

التحقق من المفاتيح في عميل إعادة محاولة المدفوعات

افحص المفتاح المولَّد قبل إرفاق ترويسة Idempotency-Key، كي يفشل المولّد المعيب بسرعة بدلًا من تحصيل الرسوم من العميل مرتين.

اختبار عقود التكاملات في التكامل المستمر

أرسل المفاتيح التي تولّدها كل خدمة من خدماتك إلى الفحص مع كل بناء، وأفشِل خط الأنابيب عندما يكسر تغيير مكتبة التنسيق.

تصحيح حادثة إزالة تكرار

الصق مفتاحًا من السجلات في الفحص المجاني بالمتصفح لترى ما إذا كان الترميز أو الطول يفسران معاملة محاولتين كطلبين مختلفين.

كم التكلفة؟

$0.002 لكل طلب. ويعمل الفحص نفسه مجانًا في متصفحك على هذه الصفحة.

هل يُخزَّن المفتاح أو يُقارَن بمفاتيح شوهدت سابقًا؟

لا. الفحص يتعلق بالتنسيق فقط: الطول والأحرف. لا يُخزَّن شيء ولا تُراجَع أي حالة لإزالة التكرار.

لماذا يُعَد المفتاح الفارغ خطأً وليس فحصًا فاشلًا؟

لأن المفتاح الفارغ ليس أبدًا اختيار تنسيق، بل هو خطأ من المُستدعي. ترفضه واجهة برمجة التطبيقات كمدخل غير صالح ليظهر الخلل فورًا.

ما الأحرف التي تُعَد آمنة في URL؟

المجموعة غير المحجوزة في RFC 3986: الحروف الكبيرة والصغيرة والأرقام والشرطة والنقطة والشرطة السفلية والتلدة. وأي حرف آخر يُبلَّغ عنه في invalid_chars.

هل يمكنني تغيير حدود الطول؟

نعم. مرّر min_length وmax_length لتجاوز الافتراضيين 16 و255، مثلًا لملاءمة مزوّد يوثّق سقفًا قدره 64 حرفًا.

هل تضمن النتيجة الصالحة أن المفتاح فريد؟

لا. الفحص يتحقق من التنسيق فقط. أما الفرادة فتأتي من طريقة توليدك للمفتاح — وUUID أو مصدر عشوائية مشابه هو الجواب المعتاد.

كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.

POSThttps://api.kit.forhosting.com/dev/idempotency-key-format-check

صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.

curl -X POST https://api.kit.forhosting.com/dev/idempotency-key-format-check \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"key":"order-7f3a9c2e-2026-07-25"}'
{
  "key": "order-7f3a9c2e-2026-07-25"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.idempotency_key_format_check",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.

لكل طلب$0.002

السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.

HTTPالرمزالمعنى
401unauthorizedمفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك.
402insufficient_balanceرصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة.
404unknown_typeنوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب.
429rate_limitedتجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة.

اطّلع على توثيق KIT الكامل ←