साइट बैकएंड (डायनामिक हैंडलर)
अपनी स्टैटिक फ़ाइलों के अलावा, एक अपलोड की गई वेबसाइट का एक असली बैकएंड भी हो सकता है — व्यक्तिगत पतों से बँधे छोटे JavaScript हैंडलर। हर हैंडलर एक पथ और एक HTTP मेथड से बँधा होता है; जब कोई आगंतुक उस पते को खोलता है, तो Qubix हैंडलर को चलाता है और जो भी वह बनाता है उसे लौटाता है — एक पेज, एक JSON उत्तर, एक रीडायरेक्ट, एक स्टेटस कोड।
इसका उपयोग तब करें जब किसी पेज को केवल स्टैटिक सामग्री दिखाने के बजाय सर्वर पर कुछ करना हो: किसी POST अनुरोध के माध्यम से एक लीड स्वीकार करना, किसी विशिष्ट पथ का उत्तर जेनरेट किए गए HTML से देना, या अनुरोध के आधार पर एक रीडायरेक्ट भेजना। सामान्य स्टैटिक whitepage और लैंडिंग के लिए आपको इसकी आवश्यकता नहीं है — Backend टैब को खाली छोड़ दें और वेबसाइट सादी फ़ाइलों के रूप में परोसी जाती है।
Backend टैब खोलें
एक वेबसाइट कार्ड के ऊपर तीन टैब होते हैं: फ़ाइलें, Backend और पूर्वावलोकन। सक्रिय टैब एड्रेस बार में सहेजा जाता है, इसलिए आप सीधे किसी विशिष्ट टैब का लिंक कॉपी कर सकते हैं।
- «वेबसाइटें» सेक्शन खोलें और जिस वेबसाइट की आपको आवश्यकता है उस पर क्लिक करें।
- Backend टैब पर जाएँ।
यदि वेबसाइट में अभी तक कोई हैंडलर नहीं है, तो सूची यह संकेत दिखाती है कि «+ नया» एक टेम्पलेट से एक हैंडलर बनाता है।
Backend टैब की आवश्यकता केवल तब होती है जब पेज को सर्वर पर कुछ प्रोसेस करना हो। एक पूरी तरह स्टैटिक पेज बिना किसी हैंडलर के काम करता है।
एक हैंडलर बनाएँ
- Backend टैब पर, हैंडलर सूची के ऊपर, ऊपर-बाएँ कोने में «+ नया» पर क्लिक करें। एक तैयार टेम्पलेट से एक नया हैंडलर बनता है और एडिटर में खुलता है।
🎬 GIF: «+ नया» पर क्लिक करना और टेम्पलेट हैंडलर का एडिटर में खुलना
- एडिटर के ऊपर हेडर फ़ॉर्म में, पथ सेट करें — वह पता जिस पर हैंडलर उत्तर देता है। यह फ़ील्ड प्लेसहोल्डर वाले टेम्पलेट को स्वीकार करता है (उदाहरण के लिए,
/users/:id)::name— एक पथ खंड कैप्चर करता है (उदाहरण के लिए,/users/:idमें:id,/users/42से मेल खाता है);*— कई खंडों में फैले पथ के शेष भाग को कैप्चर करता है;**— पथ के शेष भाग से मेल खाता है लेकिन उसे कैप्चर नहीं करता।
- मेथड चुनें —
GET,POST,PUT,DELETE,PATCH,HEAD,OPTIONS, या ANY (किसी भी मेथड का उत्तर देता है)। - चालू चेकबॉक्स को ऑन रखें ताकि हैंडलर लाइव साइट पर काम करे। किसी हैंडलर को सहेजा हुआ पर निष्क्रिय रखने के लिए इसे बंद कर दें।
- केंद्रीय एडिटर में, हैंडलर कोड लिखें (नीचे हैंडलर कोड देखें)।
- सहेजें (या Cmd+S, Windows पर — Ctrl+S) पर क्लिक करें।
बाईं ओर की सूची में, हर हैंडलर अपने मेथड और पथ के रूप में दिखाया जाता है (बिना मेथड सेट किए हुए हैंडलर को ANY के रूप में दिखाया जाता है); एक निष्क्रिय हैंडलर को तदनुसार चिह्नित किया जाता है।
यदि एक ही पते का उत्तर एक से अधिक हैंडलर दे सकते हैं, तो Qubix सबसे विशिष्ट वाले को चुनता है — एक सटीक पथ वाला हैंडलर प्लेसहोल्डर या वाइल्डकार्ड वाले हैंडलर पर जीतता है। इसलिए आप एक सटीक हैंडलर को एक व्यापक catch-all के बगल में बिना टकराव के रख सकते हैं।
हैंडलर कोड
एक हैंडलर एक JavaScript फ़ंक्शन है जो एक अनुरोध ऑब्जेक्ट प्राप्त करता है — इसे r कहें — जो अनुरोध (मेथड, पथ, क्वेरी और फ़ॉर्म आर्गुमेंट, हेडर, कैप्चर किए गए पथ खंड) और प्रतिक्रिया (हेडर सेट करना, बॉडी के साथ एक स्टेटस लौटाना, या एक रीडायरेक्ट) को उजागर करता है। एडिटर जिस टेम्पलेट से शुरू होता है वह पहले से ही विशिष्ट आकार दिखाता है।
एडिटर सिंटैक्स हाइलाइटिंग और ऑटोकम्प्लीट के साथ एक पूर्ण कोड एडिटर है: r. टाइप करना शुरू करें और Qubix उपलब्ध अनुरोध और प्रतिक्रिया फ़ील्ड को उनके विवरण के साथ सुझाता है, ताकि आपको उन्हें याद रखने की आवश्यकता न पड़े।
एक हैंडलर के अंदर आपके पास साझा Qubix टूलसेट भी होता है: रीड-ओनली डेटाबेस क्वेरी, बाहरी सेवाओं को अनुरोध, और कॉल के बीच बनी रहने वाली स्टेट। ये उसी तरह काम करते हैं जैसे स्क्रिप्ट में — विवरण के लिए वह लेख देखें। आउटबाउंड अनुरोध केवल उन्हीं पतों पर अनुमत हैं जिन्हें एडमिनिस्ट्रेटर ने अनुमति सूची में डाला है। क्वेरी किन टेबल और कॉलम तक पहुँच सकती है, यह sql क्वेरी के लिए टेबल में है।
r ऑब्जेक्ट रेफ़रेंस
हैंडलर जो कुछ अनुरोध से पढ़ता है और प्रतिक्रिया बनाने में उपयोग करता है।
अनुरोध पढ़ना:
| फ़ील्ड | यह क्या है |
|---|---|
r.method | अनुरोध का HTTP मेथड (GET, POST, …) |
r.uri | वह पता जिस पर हैंडलर ने उत्तर दिया (उदाहरण के लिए, /promo/123) |
r.rawUri | सर्विस प्रिफ़िक्स सहित पूरा बाहरी पता |
r.args | पता और फ़ॉर्म पैरामीटर (key → value) |
r.params | पथ टेम्पलेट से कैप्चर किए गए मान (उदाहरण के लिए, /users/:id से id) |
r.requestBuffer | स्ट्रिंग के रूप में अनुरोध बॉडी |
r.headersIn | अनुरोध हेडर |
r.remoteAddress | आगंतुक का IP |
r.variables | क्लिक संदर्भ: geo, click_id, sub1…sub5, lang |
r.session | आगंतुक सेशन: get(key), set(key, value), delete(key) |
प्रतिक्रिया बनाना:
| फ़ील्ड / मेथड | कार्रवाई |
|---|---|
r.headersOut | प्रतिक्रिया हेडर (आप इन्हें सेट और मिटा सकते हैं) |
r.return(status, body?, location?) | प्रतिक्रिया भेजें; location रीडायरेक्ट पता है |
r.log(...), r.warn(...), r.error(...) | रन लॉग में लिखें (टेस्ट रनर में दिखता है) |
क्रिप्टो सहायक
एक हैंडलर में क्रिप्टो सहायक भी होते हैं:
| मेथड | यह क्या करता है |
|---|---|
crypto.uuid() | एक यादृच्छिक पहचानकर्ता |
crypto.hmac(algo, key, data) | key के साथ data का HMAC, hex-encoded; algo है 'sha256', 'sha1', या 'md5' |
उदाहरण के लिए, fetch के माध्यम से किसी बाहरी सेवा को भेजने से पहले डेटा पर हस्ताक्षर करने के लिए उपयोगी।
एक हैंडलर का परीक्षण करें
हर हैंडलर के एडिटर के दाईं ओर एक अंतर्निहित टेस्ट रनर होता है — एक टेस्ट अनुरोध भेजें और बिल्कुल देखें कि हैंडलर क्या उत्तर देता है, बिना लाइव साइट को छुए।
- परीक्षण के लिए मेथड चुनें और पथ दर्ज करें (उदाहरण के लिए,
/users/42)। - (वैकल्पिक) अनुरोध इनपुट भरें:
- क्वेरी (JSON) — क्वेरी पैरामीटर एक JSON ऑब्जेक्ट के रूप में;
- बॉडी (raw) — कच्ची अनुरोध बॉडी;
- geo और click_id — हैंडलर को अनुरोध वेरिएबल के रूप में पास किए गए मान।
- चलाएँ पर क्लिक करें।
परिणाम नीचे दिखाई देता है:
- प्रतिक्रिया स्टेटस (हरा / नीला / लाल रंग में) और रन में कितना समय लगा;
- पैरामीटर — पथ टेम्पलेट से कैप्चर किए गए मान;
- रीडायरेक्ट — रीडायरेक्ट का लक्ष्य, यदि हैंडलर ने कोई सेट किया हो;
- प्रतिक्रिया हेडर और बॉडी;
- कंसोल — रन के दौरान हैंडलर ने जो कुछ भी लॉग किया।
यदि अनुरोध हैंडलर की संग्रहीत स्टेट तक पहुँचता है या उसे बदलता है, तो पैनल सत्र को भी छुआ हुआ चिह्नित करता है।
क्वेरी (JSON) मान्य JSON होनी चाहिए। यदि नहीं, तो परीक्षण नहीं चलेगा और फ़ील्ड हाइलाइट हो जाती है — JSON को ठीक करें और फिर से चलाएँ पर क्लिक करें।
साइट फ़ाइलें संपादित करें
कार्ड का दूसरा हिस्सा फ़ाइलें टैब है — वेबसाइट की स्टैटिक फ़ाइलें (HTML, CSS, JS, इमेज, फ़ॉन्ट) बाईं ओर एक ट्री में और दाईं ओर एक कोड एडिटर। टेक्स्ट फ़ाइलें सिंटैक्स हाइलाइटिंग के साथ खुलती हैं; सहेजें या Cmd+S (Windows पर — Ctrl+S) से सहेजें। इमेज, वीडियो, ऑडियो और अन्य फ़ाइलों के लिए एक पूर्वावलोकन या डाउनलोड मिलता है। आप फ़ाइलों को फ़ोल्डरों के बीच खींच सकते हैं और अपने कंप्यूटर से नई फ़ाइलें छोड़ सकते हैं।
फ़ाइलें टैब का पूरा विवरण वेबसाइटें और एक वेबसाइट अपलोड करना में है।
फ़ील्ड और व्यवहार संबंधी नोट्स
पथ — वह पता टेम्पलेट जिस पर हैंडलर उत्तर देता है। :name (एक खंड), * (शेष, कैप्चर किया गया), और ** (शेष, कैप्चर नहीं किया गया) का समर्थन करता है। कैप्चर किए गए खंड हैंडलर के लिए उपलब्ध होते हैं और टेस्ट रनर में पैरामीटर के रूप में दिखाए जाते हैं।
मेथड — कौन-सा HTTP मेथड हैंडलर को ट्रिगर करता है। ANY हर मेथड का उत्तर देता है।
चालू — हैंडलर लाइव साइट पर चलता है या नहीं। एक निष्क्रिय हैंडलर सहेजा रहता है लेकिन छोड़ दिया जाता है।
«+ नया» — अंतर्निहित टेम्पलेट से एक हैंडलर बनाता है, संपादन के लिए तैयार।