Go Resty ایک Go زبان کتابخانہ ہے جو RESTful API clients کو تیار کرنے کے لیے استعمال ہوتا ہے۔ Go Resty کے ذریعے توسعہ دان RESTful API clients کو زیادہ تیزی اور بہتری سے تیار کرسکتے ہیں۔ یہ باب Go Resty کے ساتھ تیزی سے کس طرح شروع ہونے کا تعارف کراتا ہے۔
انسٹالیشن
require github.com/go-resty/resty/v2 v2.7.0
یا
go get github.com/go-resty/resty/v2
Resty مثال
نیچے دی گئی مثالیں آپ کو resty لائبریری کا استعمال کرنے میں اتنی آسانی سے مدد فراہم کریں گی۔
// Apne code mein resty ko import karen aur is ko `resty` ke tor par istemaal karen.
import "github.com/go-resty/resty/v2"
سادہ GET درخواست
// Ek Resty client banaen
client := resty.New()
resp, err := client.R().
EnableTrace().
Get("https://httpbin.org/get")
// Response object ki tafseel karen
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()
// Gharai se maloomat hasil karen
fmt.Println("درخواست کی ریسپانس کی معلومات:")
ti := resp.Request.TraceInfo()
fmt.Println(" DNS تلاش :", ti.DNSLookup)
fmt.Println(" جڑنے کا وقت :", ti.ConnTime)
fmt.Println(" ٹی سی پی جڑنے کا وقت:", ti.TCPConnTime)
fmt.Println(" تی ایل ایس ہینڈ شیک:", 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())
Output
ریسپانس کی معلومات:
خرابی :
حالت کوڈ: 200
حالت : 200 OK
پروٹوکول : HTTP/2.0
وقت : 457.034718ملی سیکنڈ
وصول ہوا: 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.074657ملی سیکنڈ
جڑنے کا وقت : 381.709936ملی سیکنڈ
ٹی سی پی جڑنے کا وقت: 77.428048ملی سیکنڈ
تی ایل ایس ہینڈ شیک: 299.623597ملی سیکنڈ
سرور کا وقت : 75.414703ملی سیکنڈ
ریسپانس کا وقت : 79.337µسیکنڈ
کل وقت : 457.034718ملی سیکنڈ
کیا جوڑا گیا ہے : false
جوڑا گیا ہے : false
جوڑا ہوا وقت : 0سیکنڈ
درخواست کی کوشش : 1
دور کا پتہ : 3.221.81.55:443
مشکل GET درخواست
// ریستی کلائنٹ بنائیں
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")
// درخواست.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")
// اگر ضرورت ہو تو، بنیادی ردِ عمل کو جاہل کرنے کے لئے مخصوص ریسپانس مواد کو بتانے کے لئے تعین کرنے کے لئے مخصوص ریسپانس مواد کو فورس کریں
resp, err := client.R().
SetResult(result).
ForceContentType("application/json").
Get("v2/alpine/manifests/latest")
مختلف POST درخواست کی مثالیں
// ریستی کلائنٹ بنائیں
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")
// فائل کو را بائیٹ ارایہ کے طور پر اپ لوڈ کریں۔ مثال: فائل کو ڈراپ بوکس میں اپ لوڈ کریں
fileBytes, _ := os.ReadFile("/Users/jeeva/mydocument.pdf")
// یاد رہے کہ ہم نے کنٹینٹ ٹائپ ہیڈر تعین نہیں کیا ہے کیونکہ go-resty خود بطور اندراجی کی نوعیت کو خود بخود تشخیص کرے گا
resp, err := client.R().
SetBody(fileBytes).
SetContentLength(true). // ڈراپ بوکس کو یہ قیمت درکار ہے
SetAuthToken("").
SetError(&DropboxError{}). // یا SetError(DropboxError{}).
Post("https://content.dropboxapi.com/1/files_put/auto/resty/mydocument.pdf") // ڈراپ بوکس کو PUT میثاق بھی مدد کرتی ہے
// یاد رہے: اگر کنٹینٹ ٹائپ ہیڈر تعین نہیں کیا گیا ہے تو resty کو درخواست بامس کی کونٹینٹ-ٹائپ کو تشخیص کرہے ہیں
// * سٹرکٹ اور میپ ڈیٹا نوع کے لئے یہ 'application/json' پر فال ٹ ہوتا ہے
// * پھر یہ عام متن کنٹینٹ قسم ہوتی ہے
PUT درخواست
آپ POST
کے لئے دکھایا گیا سپریم کال کی طرح PUT
کے مختلف ترکیبات استعمال کر سکتے ہیں۔
// نوٹ: یہ PUT میتھڈ کا استعمال کرنے کا ایک مثال ہے، زیادہ ترکیبات کے لئے براہ کرم POST دیکھیں
// ایک Resty کلائنٹ بنائیں
client := resty.New()
// JSON مواد کے ساتھ درخواست بھیجیں
// اگر کلائنٹ سطح کی ترتیبات ہوں، تو تصدیق ٹوکن نظرانداز کیا جا سکتا ہے، خراب
resp، err := client.R().
SetBody(Article{
Title: "go-resty",
Content: "یہ میرا مضمون ہے، ہاں یہ ہے!",
Author: "جیوانندم ایم",
Tags: []string{"article", "example", "resty"},
}).
SetAuthToken("C6A79608-782F-4ED0-A11D-BD82FAD829CD").
SetError(&Error{}). // یا سیٹ ایرر(Error{}).
Put("https://myapp.com/article/1234")
PATCH درخواست
آپ POST
کے لیۓ دکھائی گئی طرح کو استعمال کرکے PATCH
کے مختلف ترکیبات استعمال کر سکتے ہیں۔
// نوٹ: یہ PATCH میتھڈ کا استعمال کرنے کا ایک مثال ہے، زیادہ ترکیبات کے لئے براہ کرم POST دیکھیں
// ایک Resty کلائنٹ بنائیں
client := resty.New()
// JSON مواد کے ساتھ درخواست بھیجیں
// اگر کلائنٹ سطح کی ترتیبات ہوں، تو تصدیق ٹوکن نظرانداز کیا جا سکتا ہے، خراب
resp، err := client.R().
SetBody(Article{
Tags: []string{"نیا ٹیگ 1", "نیا ٹیگ 2"},
}).
SetAuthToken("C6A79608-782F-4ED0-A11D-BD82FAD829CD").
SetError(&Error{}). // یا سیٹ ایرر(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{}). // یا سیٹ ایرر(Error{}).
Delete("https://myapp.com/articles/1234")
// JSON سٹرنگ کے طور پر مواد/کنٹینٹ کے ساتھ متعدد مضامین کو حذف کریں
// اگر کلائنٹ سطح کی ترتیبات ہوں، تو تصدیق ٹوکن نظرانداز کیا جا سکتا ہے، خراب
resp، err := client.R().
SetAuthToken("C6A79608-782F-4ED0-A11D-BD82FAD829CD").
SetError(&Error{}). // یا سیٹ ایرر(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)