खोज…


वाक्य - विन्यास

  • जवाब दें, जब तक: = 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