स्थापना
require github.com/go-resty/resty/v2 v2.7.0
या
go get github.com/go-resty/resty/v2
रेस्टी उदाहरण
निम्नलिखित उदाहरण आपको resty पुस्तकालय का उपयोग सबसे आसानी से करने में मदद करेंगे।
// अपनी कोड में रेस्टी को आयात करें और इसे `resty` के रूप में संदर्भित करें।
import "github.com/go-resty/resty/v2"
सरल GET अनुरोध
// एक रेस्टी ग्राहक बनाएं
client := resty.New()
resp, err := client.R().
EnableTrace().
Get("https://httpbin.org/get")
// प्रतिक्रिया ऑब्जेक्ट को जांचें
fmt.Println("प्रतिक्रिया जानकारी:")
fmt.Println(" त्रुटि :", err)
fmt.Println(" स्थिति कोड :", resp.StatusCode())
fmt.Println(" स्थिति :", resp.Status())
fmt.Println(" प्रोटोकॉल :", resp.Proto())
fmt.Println(" समय :", resp.Time())
fmt.Println(" प्राप्त वक्त:", resp.ReceivedAt())
fmt.Println(" शरीर :\n", resp)
fmt.Println()
// निरीक्षण जानकारी
fmt.Println("अनुरोध ट्रेस जानकारी:")
ti := resp.Request.TraceInfo()
fmt.Println(" DNS खोज :", ti.DNSLookup)
fmt.Println(" कनेक्ट समय :", ti.ConnTime)
fmt.Println(" TCP कनेक्ट समय:", ti.TCPConnTime)
fmt.Println(" TLS हैंडशेक :", ti.TLSHandshake)
fmt.Println(" सर्वर समय :", ti.ServerTime)
fmt.Println(" प्रतिक्रिया समय:", ti.ResponseTime)
fmt.Println(" कुल समय :", ti.TotalTime)
fmt.Println(" कनेक्शन का पुन:स्थापन किया गया है :", ti.IsConnReused)
fmt.Println(" कनेक्शन निष्क्रिय था :", ti.IsConnWasIdle)
fmt.Println(" कनेक्शन निष्क्रिय समय :", ti.ConnIdleTime)
fmt.Println(" अनुरोध प्रयास :", ti.RequestAttempt)
fmt.Println(" रिमोट पता :", ti.RemoteAddr.String())
आउटपुट
प्रतिक्रिया जानकारी:
त्रुटि :
स्थिति कोड : 200
स्थिति : 200 OK
प्रोटोकॉल : HTTP/2.0
समय : 457.034718ms
प्राप्त वक्त: 2020-09-14 15:35:29.784681 -0700 PDT m=+0.458137045
शरीर :
{
"args": {},
"headers": {
"Accept-Encoding": "gzip",
"Host": "httpbin.org",
"User-Agent": "go-resty/2.4.0 (https://github.com/go-resty/resty)",
"X-Amzn-Trace-Id": "Root=1-5f5ff031-000ff6292204aa6898e4de49"
},
"origin": "0.0.0.0",
"url": "https://httpbin.org/get"
}
अनुरोध ट्रेस जानकारी:
DNS खोज : 4.074657ms
कनेक्ट समय : 381.709936ms
TCP कनेक्ट समय: 77.428048ms
TLS हैंडशेक : 299.623597ms
सर्वर समय : 75.414703ms
प्रतिक्रिया समय: 79.337µs
कुल समय : 457.034718ms
कनेक्शन का पुन:स्थापन किया गया है : false
कनेक्शन निष्क्रिय था : false
कनेक्शन निष्क्रिय समय : 0s
अनुरोध प्रयास : 1
रिमोट पता : 3.221.81.55:443
जटिल GET अनुरोध
// एक Resty ग्राहक बनाएं
client := resty.New()
// क्वेरी पैरामीटर सेट करें
resp, err := client.R().
SetQueryParams(map[string]string{
"page_no": "1",
"limit": "20",
"sort":"name",
"order": "asc",
"random":strconv.FormatInt(time.Now().Unix(), 10),
}).
SetHeader("Accept", "application/json").
SetAuthToken("BC594900518B4F7EAC75BD37F019E08FBC594900518B4F7EAC75BD37F019E08F").
Get("/search_result")
// Request.SetQueryString विधि का उपयोग उदाहरण
resp, err := client.R().
SetQueryString("productId=232&template=fresh-sample&cat=resty&source=google&kw=buy a lot more").
SetHeader("Accept", "application/json").
SetAuthToken("BC594900518B4F7EAC75BD37F019E08FBC594900518B4F7EAC75BD37F019E08F").
Get("/show_product")
// यदि आवश्यक हो, तो संदेश कंटेंट प्रकार को निर्दिष्ट करने के लिए विशेष रूप से कोड पर प्रेरित करें ताकि Resty को आपकी संरचना में JSON प्रतिक्रिया विश्लेषित करने के लिए निर्देशित करें
resp, err := client.R().
SetResult(result).
ForceContentType("application/json").
Get("v2/alpine/manifests/latest")
विभिन्न POST अनुरोध उदाहरण
// एक Resty ग्राहक बनाएं
client := resty.New()
// POST JSON स्ट्रिंग
// यदि क्लाइंट स्तरीय सेटिंग्स सेट की गई हैं, तो सामग्री प्रकार को सेट करने की आवश्यकता नहीं है
resp, err := client.R().
SetHeader("Content-Type", "application/json").
SetBody(`{"username":"testuser", "password":"testpass"}`).
SetResult(&AuthSuccess{}). // या SetResult(AuthSuccess{}).
Post("https://myapp.com/login")
// POST []byte एरे
// यदि क्लाइंट स्तरीय सेटिंग्स सेट की गई हैं, तो सामग्री प्रकार को सेट करने की आवश्यकता नहीं है
resp, err := client.R().
SetHeader("Content-Type", "application/json").
SetBody([]byte(`{"username":"testuser", "password":"testpass"`)).
SetResult(&AuthSuccess{}). // या SetResult(AuthSuccess{}).
Post("https://myapp.com/login")
// POST संरचना, डिफ़ॉल्ट रूप से JSON सामग्री प्रकार, सेट करने की आवश्यकता नहीं है
resp, err := client.R().
SetBody(User{Username: "testuser", Password: "testpass"}).
SetResult(&AuthSuccess{}). // या SetResult(AuthSuccess{}).
SetError(&AuthError{}). // या SetError(AuthError{}).
Post("https://myapp.com/login")
// POST मैप, डिफ़ॉल्ट रूप से JSON सामग्री प्रकार, सेट करने की आवश्यकता नहीं है
resp, err := client.R().
SetBody(map[string]interface{}{"username": "testuser", "password": "testpass"}).
SetResult(&AuthSuccess{}). // या SetResult(AuthSuccess{}).
SetError(&AuthError{}). // या SetError(AuthError{}).
Post("https://myapp.com/login")
// फ़ाइल को रॉ सांख्यिक वाले बाइट एरे के रूप में अपलोड करें। उदाहरण: Dropbox में फ़ाइल अपलोड करें
fileBytes, _ := os.ReadFile("/Users/jeeva/mydocument.pdf")
// ध्यान दें कि हम सामग्री प्रकार हेडर को सेट नहीं करते क्योंकि go-resty स्वचालित रूप से सामग्री प्रकार का पता लगाएगा
resp, err := client.R().
SetBody(fileBytes).
SetContentLength(true). // Dropbox को इस मूल्य की आवश्यकता है
SetAuthToken("").
SetError(&DropboxError{}). // या SetError(DropboxError{}).
Post("https://content.dropboxapi.com/1/files_put/auto/resty/mydocument.pdf") // DropBox को PUT विधि अपलोड का समर्थन है
// ध्यान दें: यदि सामग्री प्रकार हेडर सेट नहीं किया गया है, तो resty संरचना के Content-Type को निर्धारित कर लेगा
// * स्ट्रक्चर और मैप डेटा प्रकारों के लिए, इसका डिफ़ॉल्ट रूप 'application/json' है
// * फिर यह सामान्य पाठ सामग्री प्रकार है
PUT अनुरोध
POST
के तरह, आप PUT
विधि के विभिन्न संयोजन का प्रयोग कर सकते हैं।
// ध्यान दें: यह PUT विधि का उपयोग करने का एक उदाहरण है, अधिक संयोजन के लिए कृपया POST से संदर्भित करें
// एक Resty ग्राहक बनाएं
client := resty.New()
// JSON सामग्री प्रकार के साथ अनुरोध भेजें
// यदि ग्राहक स्तरीय सेटिंग्स होती हैं, तो प्रमाणीकरण टोकन छोड़ा जा सकता है, त्रुटि
resp, err := client.R().
SetBody(Article{
Title: "go-resty",
Content: "This is my article content, oh yeah!",
Author: "Jeevanandam M",
Tags: []string{"article", "example", "resty"},
}).
SetAuthToken("C6A79608-782F-4ED0-A11D-BD82FAD829CD").
SetError(&Error{}). // या SetError(Error{}).
Put("https://myapp.com/article/1234")
पैच अनुरोध
POST
के तरह, आप PATCH
विधि के विभिन्न संयोजन का प्रयोग कर सकते हैं।
// ध्यान दें: यह PATCH विधि का उपयोग करने का एक उदाहरण है, अधिक संयोजन के लिए कृपया POST से संदर्भित करें
// एक Resty ग्राहक बनाएं
client := resty.New()
// JSON सामग्री प्रकार के साथ अनुरोध भेजें
// यदि ग्राहक स्तरीय सेटिंग्स होती हैं, तो प्रमाणीकरण टोकन छोड़ा जा सकता है, त्रुटि
resp, err := client.R().
SetBody(Article{
Tags: []string{"new tag 1", "new tag 2"},
}).
SetAuthToken("C6A79608-782F-4ED0-A11D-BD82FAD829CD").
SetError(&Error{}). // या SetError(Error{}).
Patch("https://myapp.com/articles/1234")
DELETE, HEAD, OPTIONS अनुरोध
// एक Resty ग्राहक बनाएं
client := resty.New()
// एक लेख को हटाएं
// यदि ग्राहक स्तरीय सेटिंग्स होती हैं, तो प्रमाणीकरण टोकन छोड़ा जा सकता है, त्रुटि
resp, err := client.R().
SetAuthToken("C6A79608-782F-4ED0-A11D-BD82FAD829CD").
SetError(&Error{}). // या SetError(Error{}).
Delete("https://myapp.com/articles/1234")
// JSON स्ट्रिंग के साथ एकाधिक लेखों को हटाएं
// यदि ग्राहक स्तरीय सेटिंग्स होती हैं, तो प्रमाणीकरण टोकन छोड़ा जा सकता है, त्रुटि
resp, err := client.R().
SetAuthToken("C6A79608-782F-4ED0-A11D-BD82FAD829CD").
SetError(&Error{}). // या SetError(Error{}).
SetHeader("Content-Type", "application/json").
SetBody(`{article_ids: [1002, 1006, 1007, 87683, 45432] }`).
Delete("https://myapp.com/articles")
// एक संसाधन के हैडर जानकारी प्राप्त करें
// यदि ग्राहक स्तरीय सेटिंग्स होती हैं, तो प्रमाणीकरण टोकन छोड़ा जा सकता है
resp, err := client.R().
SetAuthToken("C6A79608-782F-4ED0-A11D-BD82FAD829CD").
Head("https://myapp.com/videos/hi-res-video")
// एक संसाधन के विकल्प जानकारी प्राप्त करें
// यदि ग्राहक स्तरीय सेटिंग्स होती हैं, तो प्रमाणीकरण टोकन छोड़ा जा सकता है
resp, err := client.R().
SetAuthToken("C6A79608-782F-4ED0-A11D-BD82FAD829CD").
Options("https://myapp.com/servers/nyc-dc-01")
JSON और XML संचयन/विसंचयन संचालन स्थापित करना
उपयोक्ताओं को अपनी पसंदीदा JSON/XML पुस्तकालयों को resty के साथ पंजीकृत कर सकते हैं, या अपनी खुद की पुस्तकालयें लिख सकते हैं। डिफ़ॉल्ट रूप से, resty मानक encoding/json
और encoding/xml
पुस्तकालयों को पंजीकृत करता है।
// json-iterator को पंजीकृत करने का उदाहरण
import jsoniter "github.com/json-iterator/go"
json := jsoniter.ConfigCompatibleWithStandardLibrary
client := resty.New().
SetJSONMarshaler(json.Marshal).
SetJSONUnmarshaler(json.Unmarshal)
// इसी तरह, उपयोक्ता निम्नलिखित रूप में XML संकरण सेट कर सकते हैं -
client.SetXMLMarshaler(xml.Marshal).
SetXMLUnmarshaler(xml.Unmarshal)