Compojure से रूटिंग
Compojure का उपयोग करके वेब रूट परिभाषित करना और आने वाले अनुरोधों का मिलान विशिष्ट हैंडलर फ़ंक्शन से करना सीखें
Compojure से रूटिंग, CoddyKit पर Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
वेब रूटिंग क्या है?
जब आप अपने ब्राउज़र में कोई URL लिखते हैं, तो वेब अनुप्रयोग कैसे जानता है कि उसके कोड के किस भाग को चलाना है?
यहीं रूटिंग काम आती है! रूटिंग आने वाले वेब अनुरोधों (जैसे किसी URL पर जाना) को उन विशिष्ट फ़ंक्शन या कोड के हिस्सों से जोड़ने की प्रक्रिया है जो उन्हें संभालते हैं।
- यह ट्रैफ़िक को सही दिशा में भेजती है।
- यह आपके अनुप्रयोग को व्यवस्थित करती है।
- यह URLs को अर्थपूर्ण बनाती है।
Compojure का परिचय
Compojure Clojure वेब अनुप्रयोगों के लिए एक लोकप्रिय रूटिंग लाइब्रेरी है। यह Clojure के वेब अनुप्रयोग विनिर्देशन Ring पर आधारित है।
Compojure routes परिभाषित करने के लिए सरल मैक्रो प्रदान करता है, जिससे URLs को आपके हैंडलर फ़ंक्शन से जोड़ना आसान हो जाता है। यह आपके वेब अनुप्रयोग की संरचना को साफ़ और समझने योग्य बनाए रखने में सहायता करता है।
एक सरल GET route परिभाषित करना
Compojure अलग-अलग HTTP विधियों के लिए routes परिभाषित करने हेतु GET, POST, PUT और DELETE जैसे मैक्रो का उपयोग करता है। डेटा प्राप्त करने के लिए सबसे सरल विधि GET है।
रूट पथ / पर आने वाले अनुरोधों का उत्तर देने वाला route इस तरह परिभाषित किया जाता है:
(ns my-app.routes
(:require [compojure.core :refer [defroutes GET]]))
(defroutes app-routes
(GET "/" [] "Welcome to Compojure!"))Compojure अनुप्रयोग चलाना
अपने routes को सक्रिय करने के लिए हमें एक वेब सर्वर चाहिए। हम http-kit नामक सरल और तेज़ सर्वर का उपयोग करेंगे। हम अपने app-routes को एक फ़ंक्शन में लपेटकर सर्वर शुरू करेंगे।
यह पूरा उदाहरण चलाकर देखें। फिर अपना ब्राउज़र http://localhost:3000 पर खोलें!
(ns my-app.core
(:require [compojure.core :refer [defroutes GET]]
[org.httpkit.server :refer [run-server]]))
(defroutes app-routes
(GET "/" [] "Hello from Compojure!"))
(defn -main [& args]
(println "Starting server on port 3000...")
(run-server app-routes {:port 3000}))
(-main)पथ पैरामीटर प्राप्त करना
अक्सर आपको URL के गतिशील हिस्सों को निकालने की आवश्यकता होती है, जैसे किसी आइटम की ID या उपयोगकर्ता नाम। Compojure आपको पथ पैरामीटर के माध्यम से ऐसा करने देता है। इन्हें कोलन (:) और उसके बाद पैरामीटर नाम लिखकर दर्शाया जाता है।
इसके बाद ये पैरामीटर आपके हैंडलर फ़ंक्शन में तर्कों के रूप में उपलब्ध होते हैं।
(ns my-app.routes
(:require [compojure.core :refer [defroutes GET]]))
(defroutes user-routes
(GET "/users/:id" [id]
(str "Fetching user: " id))
(GET "/products/:name" [name]
(str "Product details for: " name)))अलग-अलग HTTP विधियों को संभालना
वेब अनुप्रयोग केवल डेटा प्राप्त नहीं करते (GET)। वे संसाधन बनाते (POST), अपडेट करते (PUT) और हटाते (DELETE) भी हैं। Compojure इनमें से प्रत्येक के लिए विशेष मैक्रो प्रदान करता है।
उपयोग की गई HTTP विधि के आधार पर आप एक ही URL पथ के लिए अलग-अलग व्यवहार परिभाषित कर सकते हैं।
(ns my-app.methods
(:require [compojure.core :refer [defroutes GET POST PUT DELETE]]))
(defroutes item-api
(GET "/items/:id" [id] (str "Get item " id))
(POST "/items" [] "Create a new item")
(PUT "/items/:id" [id] (str "Update item " id))
(DELETE "/items/:id" [id] (str "Delete item " id)))`routes` के साथ routes को समूहित करना
जैसे-जैसे आपका अनुप्रयोग बढ़ता है, आपके पास बहुत से routes होंगे। Compojure का routes मैक्रो आपको उन्हें तार्किक रूप से समूहित करने देता है। इससे आपकी रूटिंग परिभाषा अधिक व्यवस्थित और पढ़ने में आसान हो जाती है।
इसके बाद आप इन समूहित routes को अपने मुख्य अनुप्रयोग हैंडलर में जोड़ सकते हैं।
(ns my-app.groups
(:require [compojure.core :refer [defroutes GET POST routes]]))
(def user-routes
(routes
(GET "/users" [] "List all users")
(POST "/users" [] "Create a user")))
(def product-routes
(routes
(GET "/products" [] "List products")
(GET "/products/:id" [id] (str "Product details for " id))))
(defroutes main-app
user-routes
product-routes
(GET "/" [] "Homepage"))संरचना के लिए routes को नेस्ट करना
और बेहतर संगठन के लिए, विशेषकर API संस्करणों या उप-खंडों के मामले में, आप routes को नेस्ट कर सकते हैं। Compojure आपको context का उपयोग करके routes के किसी समूह के लिए एक सामान्य पथ उपसर्ग परिभाषित करने देता है।
इससे आपके अनुप्रयोग के एंडपॉइंट के लिए स्पष्ट पदानुक्रम बनता है, जैसे /api/v1/users या /admin/dashboard।
(ns my-app.nested
(:require [compojure.core :refer [defroutes GET context]]))
(defroutes api-v1-routes
(context "/api/v1" []
(GET "/users" [] "API v1: List users")
(GET "/products" [] "API v1: List products")))
(defroutes admin-routes
(context "/admin" []
(GET "/dashboard" [] "Admin Dashboard")
(GET "/settings" [] "Admin Settings")))
(defroutes all-app-routes
api-v1-routes
admin-routes
(GET "/" [] "Main site"))route मिलान का क्रम महत्वपूर्ण है
Compojure routes को उसी क्रम में संसाधित करता है जिस क्रम में वे परिभाषित किए गए हैं। आने वाले अनुरोध के पथ और HTTP विधि से मेल खाने वाला पहला route उपयोग किया जाएगा।
- अधिक विशिष्ट routes को सामान्य routes से BEFORE परिभाषित करें।
- उदाहरण के लिए,
/users/newको/users/:idसे पहले आना चाहिए।
अन्यथा, /users/new का मिलान गलती से /users/:id से हो सकता है और 'new' को ID मान लिया जा सकता है।
त्वरित जाँच: Compojure routes
Compojure की निम्नलिखित route परिभाषाओं पर विचार करें:
(defroutes my-app
(GET "/products/latest" [] "Latest Products")
(GET "/products/:id" [id] (str "Product ID: " id))
(GET "/" [] "Homepage"))इन routes के बारे में निम्नलिखित में से कौन-से कथन TRUE हैं?
पुनरावलोकन: Compojure के साथ रूटिंग
इस पाठ में आपने वेब रूटिंग की आवश्यक बातें सीखीं और यह भी जाना कि Compojure Clojure अनुप्रयोगों के लिए इसे कैसे सरल बनाता है:
- रूटिंग URLs को हैंडलर फ़ंक्शन से जोड़ती है।
- Compojure routes परिभाषित करने के लिए मैक्रो (
GET,POSTआदि) प्रदान करता है। - आप
:idजैसे पथ पैरामीटर प्राप्त कर सकते हैं। - routes को
routesके साथ समूहित औरcontextके साथ नेस्ट किया जा सकता है। - क्रम महत्वपूर्ण है: विशिष्ट routes को सामान्य routes से पहले आना चाहिए।
अब आप अपनी Clojure वेब सेवाओं के लिए स्पष्ट और व्यवस्थित routes परिभाषित करने के लिए तैयार हैं!
एआई शिक्षक के साथ Clojure सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 12
- पाठ
- 48
अक्सर पूछे जाने वाले प्रश्न
क्या “Compojure से रूटिंग” पाठ निःशुल्क है?
हाँ—“Compojure से रूटिंग” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Compojure से रूटिंग” में मैं क्या सीखूँगा?
Compojure का उपयोग करके वेब रूट परिभाषित करना और आने वाले अनुरोधों का मिलान विशिष्ट हैंडलर फ़ंक्शन से करना सीखें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Compojure से रूटिंग” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Ring और HTTP की मूल बातों का परिचय
- Compojure से रूटिंग
- अनुरोधों और प्रतिक्रियाओं को संभालना
- Ring मिडलवेयर का गहन अध्ययन