مواد پر جائیں
FormFlow

بھیجنے سے پہلے پری فلائٹ سے خراب سبمشن پکڑیں

جب شخص ابھی صفحے پر ہو تو فارم سے اُس کا اپنا فیصلہ طلب کریں۔ پری فلائٹ درخواست کی بناوٹ، Origin اور سخت اسکیما جانچتی ہے، کوئی قطار محفوظ نہیں کرتی، اور اصل سبمشن کے قبول ہونے کا وعدہ کبھی نہیں کرتی۔

یہ مضمون مشین کے ذریعے ترجمہ کیا گیا ہے۔ انگریزی میں اصل مضمون پڑھیں

A dark FormFlow plate titled 'Ask before Send.' with a checklist reading Shape, Origin and Strict schema ready, and 'No side effects' kept.

مسترد شدہ سبمشن اُس واحد چیز کی قیمت لیتی ہے جو یہ پروڈکٹ کبھی واپس نہیں لا سکتا: ایک شخص جو صفحے پر تھا اور پھر نہ رہا۔ FormFlow ہر مستردگی کو ایسے ریکارڈ کے طور پر رکھتا ہے جس پر آپ کارروائی کر سکتے ہیں، اور فارم کے صحت کے اشارے اُنہیں گنتے ہیں۔ پری فلائٹ اِس فیصلے کا واحد حصہ ہے جو بھیجیں سے پہلے چلتا ہے۔ یہ v1.0.0 کے ساتھ آیا۔

پری فلائٹ کس چیز کا جواب دیتی ہے

اپنے فارم جو جوابات بھیجتا، وہی جوابات JSON میں لے کر /api/v1/f/{token}/preflight پر POST بھیجیں، اور راستے میں فارم کا عوامی ٹوکن رکھیں۔ یہ اینڈ پوائنٹ وہی فیصلہ لوٹاتا ہے جو قبولیت کا اینڈ پوائنٹ اُن جوابات پر دیتا، بغیر وہ فیصلہ دیے۔ صفحے کا اپنا Origin ہیڈر بھیجیں تو وہ بالکل ویسے ہی جانچا جاتا ہے جیسے سبمشن اینڈ پوائنٹ جانچتا ہے۔ معاہدہ API حوالہ میں لکھا ہے۔

جواب میں چار کلیدیں ہیں: ok، errors، checked اور policy۔ errors ایک آبجیکٹ ہے جس کی کلیدیں فیلڈ کے نام اور قدریں جملوں کی فہریں ہیں، اور خالی ہونے پر بھی آبجیکٹ ہی رہتا ہے تاکہ کوئی تیار شدہ کالر اُسے انڈیکس کر سکے۔ checked بتاتا ہے کہ واقعی کیا پوچھا گیا — بناوٹ، origin اور اسکیما — ہوسٹ کردہ صفحے پر origin موجود نہیں ہوتا، کیونکہ FormFlow جو صفحہ پیش کرتا ہے وہ آپ کی اجازت یافتہ ماخذ فہرست کے تابع نہیں۔

جب شخص ابھی صفحے پر ہو تب اِسے بلائیں

ایک fetch کافی ہے۔ یہ کال کی شکل ہے؛ اِسے اُسی واقعے سے جوڑیں جس پر آپ کا صفحہ پہلے سے بھروسا کرتا ہے، جیسے کسی فیلڈ سے باہر نکلنا۔

const endpoint = 'https://formflow.digital/api/v1/f/YOUR_FORM_TOKEN/preflight'

async function preflight(answers) {
  const response = await fetch(endpoint, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json', Accept: 'application/json' },
    body: JSON.stringify(answers),
  })

  // A 429 or an outage is not a verdict. Say nothing rather than something wrong.
  if (!response.ok) return null

  const { ok, errors, checked, policy } = await response.json()
  return ok ? [] : Object.entries(errors)
}

جو جملے واپس آئیں اُنہیں اُسی فیلڈ کے پاس دکھائیں جس کا وہ نام لیتے ہیں۔ اپنے کوڈ میں قواعد دوبارہ نہ لکھیں: اینڈ پوائنٹ کا مقصد یہی ہے کہ شخص جو جملہ پڑھے وہی جملہ اینڈ پوائنٹ استعمال کرتا، فارم کی زبان میں، آپ کے JavaScript کی زبان میں نہیں۔

جواب پڑھیں

کلید

اِس میں کیا ہے

ok

true صرف تب جب کسی نے جوابات کو مسترد نہ کیا ہو

errors

ہر فیلڈ نام کے لیے ایک اندراج، ہر ایک جملوں کی فہرست

checked

کیا پوچھا گیا: بناوٹ، origin، اسکیما

policy.revision

فیصلے میں استعمال شدہ پالیسی کا ورژن

policy.fingerprint

اُسی عین پالیسی کی شناخت کرنے والا فنگر پرنٹ

errors میں دو کلیدیں فیلڈ نہیں ہیں۔ origin اجازت یافتہ ماخذ فہرست کی مستردگی رکھتا ہے، اور submission وہ مستردگی رکھتا ہے جو کسی ایک جواب کی نہیں بلکہ پورے فارم کی ہوتی ہے، جیسے بند فارم۔ policy بلاک لاگ کریں: ورژن اور فنگر پرنٹ مل کر اُسی عین پالیسی کی شناخت کرتے ہیں جو فیصلے میں لگی، اور یہی آپ کو اُس دن چاہیے جب یہاں کامیابی کے بعد وہاں مستردگی آئے۔

یہ کیا نہیں پوچھتی

یہ فیصلے کا صرف وہ آدھا حصہ پوچھتی ہے جو فارم کی ترتیب کا خالص فعل ہے۔ یہ اسپام اسکورنگ نہیں چلاتی، Turnstile چیلنج نہیں مانگتی، اور فائل فیلڈز کی طرف بالکل نہیں دیکھتی — پری فلائٹ کوئی بائٹ نہیں ڈھوتی، اِس لیے اعلان شدہ تصویر نہ جانچی جاتی ہے نہ اُس کا وعدہ کیا جاتا ہے۔ یہ کوئی قطار محفوظ نہیں کرتی، کوٹہ خرچ نہیں کرتی اور کچھ بھی تقسیم نہیں کرتی۔

مگر یہ شرح محدود کرنے والے کے اندر ہے۔ پری فلائٹ سبمشن اینڈ پوائنٹ کے ساتھ token|IP بالٹی اور پوری ٹیم کی درخواستوں کی بالٹی ساجھا کرتی ہے، اِس لیے ایک جھونکا 429 اور Retry-After لوٹا سکتا ہے۔ 429 فیصلے کی عدم موجودگی ہے، مستردگی نہیں، اور صفحے کو خاموش رہنا چاہیے، غلطی گڑھنی نہیں چاہیے۔

یہ کہاں بیٹھتی ہے

مسترد شدہ سبمشن کے لیے FormFlow کے پاس جو بھی دوسرا طریقہ ہے وہ کسی کے مسترد ہونے کے بعد چلتا ہے: مستردگی کی بہی، صحت کا اشارہ، مستردگی کی سطح اور بازیابی کا ان باکس۔ یہ واحد ہے جو اُس سے پہلے چلتی ہے۔ اِسے دو فیصلوں میں سے پہلا سمجھیں، کبھی اکیلا نہیں۔

  • کامیابی وعدہ نہیں۔ POST فیصلہ کرتا ہے، اور وہ پری فلائٹ کے نہ پوچھے گئے سب کچھ کے ساتھ دوبارہ فیصلہ کرتا ہے۔

  • دونوں کالوں کے درمیان فارم بدلیں تو جواب بھی بدل سکتا ہے۔ جواب میں دیا گیا پالیسی ورژن وہی ہے جس نے آپ پر فیصلہ دیا۔

  • فائل فیلڈز کی جانچ نہیں ہوتی، اِس لیے کسی سبمٹر سے کبھی نہ کہیں کہ اُس کی تصویر پری فلائٹ کی بنیاد پر قبول ہوئی۔

  • errors کی کلیدیں فیلڈ نام ہیں، مگر origin اور submission فیلڈ نہیں ہیں؛ اُنہیں فارم کے اوپر دکھائیں۔

  • فارم کا عوامی ٹوکن رکھنے والا کوئی بھی اِسے بلا سکتا ہے۔ یہ اِس بات کا ثبوت نہیں کہ کون بلا رہا ہے، اور یہ کوئی راز نہیں ہے۔

اپنے پہلے فارم کو FormFlow پر بھیجیں۔

نہ کوئی بیک اینڈ بنانا ہے، نہ کوئی فرنٹ اینڈ ہوسٹ کرنا ہے۔

مفت میں شروع کریں