Go
HTTP क्लाइंट
खोज…
वाक्य - विन्यास
- जवाब दें, जब तक: = http.Get (url) // डिफ़ॉल्ट HTTP क्लाइंट के साथ HTTP GET अनुरोध बनाता है। अनुरोध विफल होने पर एक गैर-शून्य त्रुटि लौटा दी जाती है।
- जवाब, गलत: = http.Post (url, bodyType, body) // डिफ़ॉल्ट HTTP क्लाइंट के साथ HTTP POST अनुरोध बनाता है। अनुरोध विफल होने पर एक गैर-शून्य त्रुटि लौटा दी जाती है।
- जवाब, गलत: = http.PostForm (url, मान) // डिफ़ॉल्ट HTTP क्लाइंट के साथ HTTP फॉर्म POST अनुरोध बनाता है। अनुरोध विफल होने पर एक गैर-शून्य त्रुटि लौटा दी जाती है।
पैरामीटर
पैरामीटर | विवरण |
---|---|
resp | HTTP अनुरोध के प्रकार *http.Response की प्रतिक्रिया |
ग़लती होना | एक error । यदि शून्य नहीं है, तो यह उस त्रुटि का प्रतिनिधित्व करता है जो फ़ंक्शन को कॉल करने पर हुई थी। |
यूआरएल | HTTP अनुरोध करने के लिए टाइप string का URL। |
शरीर के प्रकार | MIME प्रकार की string का प्रकार POST अनुरोध के शरीर पेलोड। |
तन | एक io.Reader (लागू करना Read() ) जो तब तक पढ़ा जाएगा जब तक कि एक त्रुटि नहीं पहुंच जाती है, जब तक कि POST अनुरोध के शरीर पेलोड के रूप में प्रस्तुत नहीं किया जाता है। |
मान | प्रकार url.Values का एक मुख्य-मूल्य मानचित्र। अंतर्निहित प्रकार एक map[string][]string । |
टिप्पणियों
defer resp.Body.Close()
को defer resp.Body.Close()
महत्वपूर्ण है। defer resp.Body.Close()
हर HTTP अनुरोध के बाद जो एक गैर-शून्य त्रुटि वापस नहीं करता है, अन्यथा संसाधन लीक हो जाएंगे।
बेसिक जी.ई.टी.
मूल GET अनुरोध करें और किसी साइट (HTML) की सामग्री प्रिंट करता है।
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
resp, err := http.Get("https://example.com/")
if err != nil {
panic(err)
}
// It is important to defer resp.Body.Close(), else resource leaks will occur.
defer resp.Body.Close()
data, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
// Will print site contents (HTML) to output
fmt.Println(string(data))
}
URL पैरामीटर और JSON प्रतिक्रिया के साथ प्राप्त करें
Stack Exchange API का उपयोग करके शीर्ष 10 सबसे हाल ही में सक्रिय StackOverflow पोस्ट के लिए एक अनुरोध।
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
)
const apiURL = "https://api.stackexchange.com/2.2/posts?"
// Structs for JSON decoding
type postItem struct {
Score int `json:"score"`
Link string `json:"link"`
}
type postsType struct {
Items []postItem `json:"items"`
}
func main() {
// Set URL parameters on declaration
values := url.Values{
"order": []string{"desc"},
"sort": []string{"activity"},
"site": []string{"stackoverflow"},
}
// URL parameters can also be programmatically set
values.Set("page", "1")
values.Set("pagesize", "10")
resp, err := http.Get(apiURL + values.Encode())
if err != nil {
panic(err)
}
defer resp.Body.Close()
// To compare status codes, you should always use the status constants
// provided by the http package.
if resp.StatusCode != http.StatusOK {
panic("Request was not OK: " + resp.Status)
}
// Example of JSON decoding on a reader.
dec := json.NewDecoder(resp.Body)
var p postsType
err = dec.Decode(&p)
if err != nil {
panic(err)
}
fmt.Println("Top 10 most recently active StackOverflow posts:")
fmt.Println("Score", "Link")
for _, post := range p.Items {
fmt.Println(post.Score, post.Link)
}
}
एक संदर्भ के साथ समय का अनुरोध
1.7+
एक संदर्भ के साथ एक HTTP अनुरोध को समयबद्ध करने से केवल 1.7 में मानक पुस्तकालय (सबरपोज़ नहीं) पूरा किया जा सकता है:
import (
"context"
"net/http"
"time"
)
req, err := http.NewRequest("GET", `https://example.net`, nil)
ctx, _ := context.WithTimeout(context.TODO(), 200 * time.Milliseconds)
resp, err := http.DefaultClient.Do(req.WithContext(ctx))
// Be sure to handle errors.
defer resp.Body.Close()
1.7 से पहले
import (
"net/http"
"time"
"golang.org/x/net/context"
"golang.org/x/net/context/ctxhttp"
)
ctx, err := context.WithTimeout(context.TODO(), 200 * time.Milliseconds)
resp, err := ctxhttp.Get(ctx, http.DefaultClient, "https://www.example.net")
// Be sure to handle errors.
defer resp.Body.Close()
आगे की पढाई
अधिक जानकारी के लिए context
पैकेज देखने प्रसंग ।
JSON ऑब्जेक्ट का PUT अनुरोध
निम्नलिखित एक PUT अनुरोध के माध्यम से उपयोगकर्ता ऑब्जेक्ट को अपडेट करता है और अनुरोध की स्थिति कोड प्रिंट करता है:
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
type User struct {
Name string
Email string
}
func main() {
user := User{
Name: "John Doe",
Email: "[email protected]",
}
// initialize http client
client := &http.Client{}
// marshal User to json
json, err := json.Marshal(user)
if err != nil {
panic(err)
}
// set the HTTP method, url, and request body
req, err := http.NewRequest(http.MethodPut, "http://api.example.com/v1/user", bytes.NewBuffer(json))
if err != nil {
panic(err)
}
// set the request header Content-Type for json
req.Header.Set("Content-Type", "application/json; charset=utf-8")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
}
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow