ब्लॉग
Netlify Forms का विकल्प: एक फ़ॉर्म बैकएंड जो हर जगह काम करता है
· 5 मिनट का पठन
Netlify Forms वाक़ई एक सुविधाजनक फ़ीचर है - बशर्ते आप Netlify पर बने रहें। यह प्लेटफ़ॉर्म के बिल्ड पाइपलाइन में अंतर्निहित है, इसलिए कोई फ़ॉर्म बिना किसी बाहरी सेवा के "बस काम करता है"। पेच पहले हिस्से में ही है: यह इसलिए काम करता है क्योंकि Netlify का बिल्ड चरण यह काम कर रहा होता है, जिसका मतलब है कि फ़ॉर्म चुपचाप होस्ट से जुड़ा हुआ है। साइट को स्थानांतरित करें, और फ़ॉर्म भी उसके साथ काम करना बंद कर देता है।
Netlify Forms असल में क्या माँगता है
Netlify Forms कोई सामान्य HTML फ़ीचर नहीं है - इसे बिल्ड टाइम पर पहचाना जाता है। आप <form> टैग में data-netlify="true" जोड़ते हैं, Netlify का बिल्ड चरण डिप्लॉय किए गए HTML को इस attribute के लिए स्कैन करता है, फ़ॉर्म के फ़ील्ड्स रजिस्टर करता है, और तभी सबमिशन प्राप्त करने के लिए endpoint अस्तित्व में आता है। इससे तीन बातें निकलती हैं:
- साइट को Netlify पर ही होस्ट और बिल्ड किया जाना चाहिए - पहचान उनके बिल्ड पाइपलाइन में होती है, ब्राउज़र में नहीं।
- जो फ्रेमवर्क क्लाइंट पर फ़ॉर्म को डायनामिक रूप से रेंडर करते हैं (यानी HTML में पहले से attribute के साथ स्टैटिक मार्कअप देने के बजाय), उन्हें अक्सर अतिरिक्त वर्कअराउंड की ज़रूरत पड़ती है, क्योंकि बिल्ड-टाइम स्कैनर को खोजने के लिए कुछ मिलता ही नहीं।
- फ़ॉर्म का अस्तित्व एक सफल Netlify बिल्ड पर निर्भर करता है, न कि मार्कअप पर।
इससे बनने वाला लॉक-इन
इनमें से कुछ भी असल में कोई खामी नहीं है - एक ऐसे प्लेटफ़ॉर्म के लिए यह एक उचित डिज़ाइन है जो एक इंटीग्रेटेड फ़ीचर देना चाहता है। लेकिन इसका मतलब है कि आपका कॉन्टैक्ट फ़ॉर्म असल में आपकी साइट का हिस्सा नहीं है; यह आपके होस्टिंग कॉन्ट्रैक्ट का हिस्सा है। किसी और होस्ट - Vercel, Cloudflare Pages, एक साधारण VPS, या कहीं और - पर जाएँ, तो फ़ॉर्म को एक अलग तंत्र के अनुसार फिर से बनाना पड़ता है। लागत, प्रदर्शन, या edge फ़ीचर्स के लिए किसी दूसरे होस्ट का मूल्यांकन करें, तो फ़ॉर्म एक ऐसी चीज़ बन जाता है जिसे माइग्रेट करने से पहले फिर से हल करना पड़ता है। किसी कॉन्टैक्ट फ़ॉर्म का किसी इन्फ्रास्ट्रक्चर निर्णय पर इतना प्रभाव होना अजीब बात है।
होस्ट-निरपेक्ष विकल्प
एक होस्टेड फ़ॉर्म बैकएंड इस बात की परवाह न करके यह जुड़ाव हटा देता है कि HTML कहाँ से परोसा जा रहा है। यहाँ न कोई बिल्ड-टाइम स्कैनिंग है, न किसी प्लेटफ़ॉर्म इंटीग्रेशन पर निर्भरता - बस एक साधारण फ़ॉर्म है जिसका action किसी endpoint की ओर इशारा करता है:
<form action="https://formhook.app/f/fh_your-key" method="POST">
<label>Email <input type="email" name="email" required></label>
<label>Message <textarea name="message" required></textarea></label>
<button type="submit">Send</button>
</form>यह मार्कअप Netlify, Vercel, Cloudflare Pages, GitHub Pages, या किसी खुद बनाए VPS पर बिल्कुल एक जैसा काम करता है - ब्राउज़र सीधे endpoint को POST भेजता है, इसलिए होस्ट, बिल्ड टूल, या फ्रेमवर्क के बारे में कुछ भी मायने नहीं रखता। सबमिशन एक डैशबोर्ड में आते हैं, पुश सूचना ट्रिगर करते हैं, और एक webhook को फ़ॉरवर्ड होते हैं (Formhook Discord, Slack, और Microsoft Teams के URL को अपने आप पहचान लेता है और हर एक के लिए payload को फ़ॉर्मेट करता है; बाक़ी सबको एक सामान्य HMAC-साइन किया गया JSON POST मिलता है)। अगले साल होस्ट बदलें, फ़ॉर्म को कुछ पता ही नहीं चलेगा - action URL ही एकमात्र चीज़ है जो इसे किसी से जोड़ती है, और वह किसी होस्ट से बिल्कुल भी जुड़ी नहीं है।
स्पैम, होस्ट चाहे जो भी हो, उसी तरह संभाला जाता है
चूँकि endpoint किसी भी चीज़ के लिए होस्ट पर निर्भर नहीं है, उसे प्लेटफ़ॉर्म की फ़िल्टरिंग उधार लेने के बजाय स्पैम खुद संभालना पड़ता है: एक honeypot फ़ील्ड उन बॉट्स को पकड़ती है जो हर इनपुट भर देते हैं, रेट लिमिटिंग दुरुपयोग करने वाले भेजने वालों को धीमा कर देती है, और जिन साइटों को ज़रूरत हो उनके लिए प्रति-फ़ॉर्म एक वैकल्पिक Cloudflare Turnstile चैलेंज (प्राइवेसी-फ्रेंडली, Google reCAPTCHA नहीं) जोड़ा जा सकता है। इनमें से कुछ भी इस पर निर्भर नहीं करता कि पेज कौन-सा प्लेटफ़ॉर्म परोस रहा है।
बदलाव बस एक attribute जितना आसान है
अगर आप पहले से Netlify पर हैं और वहाँ खुश हैं, तो Netlify Forms बिल्कुल ठीक है - यह उन साइटों के लिए एक जायज़ सुविधा है जो कभी छोड़ने की योजना ही नहीं बनातीं। लेकिन अगर आप होस्ट बदल रहे हैं, प्लेटफ़ॉर्म्स की तुलना कर रहे हैं, या बस यह नहीं चाहते कि कोई कॉन्टैक्ट फ़ॉर्म इस बात की वजह बने कि आप ऐसा नहीं कर सकते, तो एक होस्ट-निरपेक्ष बैकएंड इस बाधा को पूरी तरह हटा देता है। Formhook का मुफ़्त स्तर बिना किसी कार्ड के हर महीने 250 सबमिशन संभालता है, फ़ॉर्म जोड़ने में बस एक मिनट लगता है, और आपका पूरा सबमिशन इतिहास - अपलोड की गई फ़ाइलों सहित - जब चाहें ZIP के रूप में एक्सपोर्ट हो जाता है। पूरी सेटअप जानकारी के लिए डॉक्स देखें, या मुफ़्त में शुरू करें और आज ही अपने मौजूदा फ़ॉर्म को इस पर पॉइंट कर दें।
एक ही लाइन में काम करने वाला फ़ॉर्म
EU-होस्टेड, सबमिशन हमेशा के लिए सुरक्षित, हर टियर पर पुश सूचनाएँ।
मुफ़्त में शुरू करेंक्रेडिट कार्ड नहीं चाहिए · दस्तावेज़ पढ़ें
आगे पढ़ें
- Formspree से Formhook में माइग्रेट करना: दस मिनट की गाइडफ़ॉर्म बैकएंड बदलना बस एक लाइन का बदलाव है। Formspree से Formhook माइग्रेशन: एक्सपोर्ट, एंडपॉइंट स्वैप, स्पैम सेटिंग्स, टेस्टिंग - सिर्फ़ दस मिनट में।
- फ़ॉर्म बैकएंड क्या है? (और आपको इसकी ज़रूरत कब है)फ़ॉर्म बैकएंड आपकी वेबसाइट के फ़ॉर्म सबमिशन प्राप्त करता, संग्रहीत करता और आगे भेजता है — बिना सर्वर चलाए। ये कैसे काम करते हैं और कब चाहिए।
- Cloudflare Pages में कॉन्टैक्ट फ़ॉर्म कैसे जोड़ेंCloudflare Pages के पास Netlify जैसी कोई बिल्ट-इन फ़ॉर्म-हैंडलिंग सेवा नहीं है। यहाँ बताया गया है क्यों, और फिर भी सबसे तेज़ तरीके से काम करने वाला कॉन्टैक्ट फ़ॉर्म लाइव करने का तरीका।