GET और POST एंडपॉइंट बनाना
पथ पैरामीटर, क्वेरी स्ट्रिंग और अनुरोध बॉडी का पार्सिंग सँभालें।
GET और POST एंडपॉइंट बनाना, CoddyKit पर R Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह R Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Plumber क्या है
plumber विशेष टिप्पणी एनोटेशन का उपयोग करके सामान्य R फ़ंक्शन को HTTP API एंडपॉइंट में बदलता है। किसी फ़ंक्शन पर #* @get /path एनोटेशन लगाएँ और Plumber एक GET रूट बनाता है, जो उस फ़ंक्शन को कॉल करके उसका परिणाम JSON के रूप में लौटाता है।
install.packages('plumber') से इंस्टॉल करें।
अपना पहला GET एंडपॉइंट
एक बुनियादी Plumber API एक फ़ाइल में रहती है (जैसे api.R)। फ़ंक्शन पर पथ के बाद #* @get एनोटेशन लगाएँ। Plumber फ़ंक्शन के लौटाए गए मान को अपने-आप JSON में सीरियलाइज़ करता है।
# api.R
# library(plumber)
#
# #* Return a greeting
# #* @get /hello
# function() {
# list(message = 'Hello from Plumber!')
# }
#
# Start with:
# pr <- plumb('api.R')
# pr$run(port = 8000)प्रकार संकेतों के साथ पथ पैरामीटर
कोणीय कोष्ठक सिंटैक्स का उपयोग करके पथ के परिवर्तनीय खंड शामिल करें: /users/<id:int>। Plumber उस खंड को पार्स करके आपके फ़ंक्शन में टाइप किए गए तर्क के रूप में भेजता है। समर्थित प्रकारों में int, dbl और chr शामिल हैं।
# #* Get a user by ID
# #* @get /users/<id:int>
# function(id) {
# # id is already an integer
# list(
# user_id = id,
# name = paste('User', id)
# )
# }
#
# GET /users/42 => {"user_id":42, "name":"User 42"}#* @param के साथ क्वेरी पैरामीटर
#* @param name Description के साथ क्वेरी पैरामीटर का दस्तावेज़ीकरण करें। पैरामीटर का नाम फ़ंक्शन के तर्क के नाम से मेल खाना चाहिए। Plumber इसे क्वेरी स्ट्रिंग से अपने-आप पढ़ता है — मैन्युअल पार्सिंग की आवश्यकता नहीं होती।
# #* Search users by name
# #* @param name The name to search for
# #* @param limit Maximum results to return
# #* @get /users/search
# function(name = '', limit = '10') {
# limit <- as.integer(limit)
# # query string: /users/search?name=Alice&limit=5
# list(query = name, max = limit)
# }POST एंडपॉइंट बनाना
अनुरोध का मुख्य भाग प्राप्त करने वाले एंडपॉइंट के लिए #* @post /path का उपयोग करें। विशेष req तर्क कच्चे अनुरोध ऑब्जेक्ट तक पहुँच देता है। जब फ़ंक्शन तर्क का नाम req होता है, तो Plumber इसे अपने-आप भेजता है।
# #* Create a new user
# #* @post /users
# function(req) {
# body <- jsonlite::fromJSON(req$postBody)
# # body$name, body$email are now available
# list(
# status = 'created',
# user_id = sample(1000:9999, 1),
# name = body$name
# )
# }अनुरोध के मुख्य भाग को पार्स करना
req$postBody में POST के मुख्य भाग से मिली कच्ची JSON स्ट्रिंग होती है। नाम वाली R सूची पाने के लिए इसे jsonlite::fromJSON(req$postBody) से पार्स करें। प्रोसेस करने से पहले आवश्यक फ़ील्ड का हमेशा मान्यकरण करें।
# #* @post /orders
# function(req, res) {
# body <- jsonlite::fromJSON(req$postBody)
# if (is.null(body$product_id)) {
# res$status <- 400L
# return(list(error = 'product_id is required'))
# }
# list(
# order_id = as.integer(Sys.time()),
# product_id = body$product_id,
# quantity = body$quantity %||% 1
# )
# }res$status के साथ HTTP स्थिति कोड
res तर्क (जिसे Plumber अपने-आप भी जोड़ता है) आपको HTTP प्रतिक्रिया का स्थिति कोड सेट करने देता है। लौटाने से पहले इसे सेट करें: res$status <- 404L। सामान्य कोड:
- 200 — OK (डिफ़ॉल्ट)
- 201 — बनाया गया
- 400 — ख़राब अनुरोध
- 404 — नहीं मिला
- 500 — आंतरिक सर्वर त्रुटि
# #* @get /items/<id:int>
# function(id, res) {
# items <- list(
# list(id=1, name='Widget'),
# list(id=2, name='Gadget')
# )
# found <- Filter(function(x) x$id == id, items)
# if (length(found) == 0) {
# res$status <- 404L
# return(list(error = paste('Item', id, 'not found')))
# }
# found[[1]]
# }नाम वाली सूचियों को JSON के रूप में लौटाना
Plumber R के लौटाए गए मानों को jsonlite का उपयोग करके JSON में सीरियलाइज़ करता है। नाम वाली सूचियाँ JSON ऑब्जेक्ट बनती हैं; बिना नाम वाली सूचियाँ JSON ऐरे बनती हैं। संरचित प्रतिक्रियाओं के लिए नाम वाली सूची लौटाएँ।
# Named list => JSON object
# list(id=1, name='Alice') => {"id":1, "name":"Alice"}
#
# Unnamed list => JSON array
# list(1, 2, 3) => [1, 2, 3]
#
# Nested structures work too:
# list(
# user = list(id=1, name='Alice'),
# orders = list(list(id=101), list(id=102))
# )
# => {"user":{"id":1,"name":"Alice"}, "orders":[{"id":101},{"id":102}]}Plumber राउटर ऑब्जेक्ट
plumb('api.R') से एनोटेट की गई R फ़ाइल लोड करके Plumber का router ऑब्जेक्ट बनाएँ। सर्वर शुरू करने के लिए pr$run(port = 8000) कॉल करें। प्रोडक्शन में आमतौर पर pr_run(pr, host='0.0.0.0', port=8000) कॉल किया जाता है।
# Standard plumber startup in api_start.R:
# library(plumber)
# pr <- plumb('api.R')
# pr$run(port = 8000, host = '0.0.0.0')
#
# Or with pipe style:
# plumb('api.R') |> pr_run(port = 8000)
#
# Test with:
# curl http://localhost:8000/helloएकाधिक HTTP विधियों को संभालना
अलग-अलग एनोटेट किए गए फ़ंक्शन लिखकर एक ही पथ में कई विधियों का समर्थन किया जा सकता है। उपयोग की गई HTTP विधि के आधार पर Plumber अनुरोध को सही फ़ंक्शन तक पहुँचाता है।
# #* List all products
# #* @get /products
# function() {
# list(products = list(list(id=1, name='Widget')))
# }
#
# #* Create a product
# #* @post /products
# function(req) {
# body <- jsonlite::fromJSON(req$postBody)
# list(created = TRUE, name = body$name)
# }अपने API एंडपॉइंट का परीक्षण करना
सर्वर चलने के दौरान एंडपॉइंट का परीक्षण करने के लिए टर्मिनल से curl या R से httr2 का उपयोग करें। httr2 आपको अपने API कोड के साथ दोहराए जा सकने वाले परीक्षण लिखने देता है।
# From terminal:
# curl http://localhost:8000/users/42
# curl -X POST http://localhost:8000/users \
# -H 'Content-Type: application/json' \
# -d '{"name":"Alice","email":"alice@example.com"}'
#
# From R:
# library(httr2)
# resp <- request('http://localhost:8000/users/42') |> req_perform()
# resp_body_json(resp)त्वरित जाँच: पथ पैरामीटर
आप id नाम के ऐसे पथ पैरामीटर की घोषणा कैसे करेंगे जिसे Plumber को पूर्णांक के रूप में पार्स करना हो?
GET और POST एंडपॉइंट का पुनरावलोकन
Plumber के साथ REST एंडपॉइंट बनाना:
#* @get /pathएक GET रूट बनाता है;#* @post /pathएक POST रूट बनाता है- पथ पैरामीटर में
<name:type>सिंटैक्स (int,dbl,chr) का उपयोग होता है - क्वेरी पैरामीटर अपने-आप मेल खाते फ़ंक्शन आर्ग्युमेंट में पार्स हो जाते हैं
- POST का मुख्य भाग
jsonlite::fromJSON(req$postBody)के माध्यम से उपलब्ध होता है - गैर-200 HTTP प्रतिक्रियाओं के लिए
res$statusसेट करें - नामित सूचियाँ लौटाएँ — वे अपने-आप JSON ऑब्जेक्ट में क्रमबद्ध हो जाती हैं
एआई शिक्षक के साथ R सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 43
- पाठ
- 159
अक्सर पूछे जाने वाले प्रश्न
क्या “GET और POST एंडपॉइंट बनाना” पाठ निःशुल्क है?
हाँ — R Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “GET और POST एंडपॉइंट बनाना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“GET और POST एंडपॉइंट बनाना” में मैं क्या सीखूँगा?
पथ पैरामीटर, क्वेरी स्ट्रिंग और अनुरोध बॉडी का पार्सिंग सँभालें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ R Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या R Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर R Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“GET और POST एंडपॉइंट बनाना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस R Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर R Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Plumber और REST का परिचय
- GET और POST एंडपॉइंट बनाना
- प्रमाणीकरण और API सुरक्षा
- Plumber API को उत्पादन में परिनियोजित करना