Konsumerar RESTful API:er med Go

Konsumerar RESTful API:er med Go

RESTful API: er är populära arkitekturer för dataöverföring över webben. RESTful API:er använder vanligtvis HTTP, vilket gör dem lämpliga för fall där tillståndslöshet är viktigt.





Som alla språk på serversidan kan du interagera med HTTP-protokollet och göra HTTP-förfrågningar i Go.





Komma igång Konsumera RESTful APIs i Go

De http paketet innehåller de flesta funktioner du behöver för att interagera med HTTP-protokollet i Go. Detta inkluderar att göra HTTP-förfrågningar, och du behöver inte nödvändigtvis externa beroenden, som Gin eller en databas .





MAKEUSE AV DAGENS VIDEO

Du kan använda http paket att konsumera API:er och hämta sidor för webbskrapning i Go .

Importera dessa paket för att börja göra HTTP-förfrågningar i Go.



import ( 
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)

Du kommer att använda bytes paket för att manipulera byteskivor, den json paket för att formatera förfrågningsdata, den fmt paket för att skriva till standardutdata, den ioutil paket för input och output, och http paket för att skicka förfrågningar.

En enkel GET-förfrågan på gång

Typisk SKAFFA SIG begär läsdata från en server och kan tillhandahålla parametrar för data beroende på API:ts natur och specifikation.





I den här handledningen kommer du att lära dig hur du använder RESTful API:er med hjälp av httpbins enkla begäran och svarstjänst.

hur man tjänar pengar genom att spela spel

Här är ett exempel på hur du gör en HTTP-förfrågan med Go:





url := "https://httpbin.org/get" 
response, err := http.Get(url)

if err != nil {
fmt.Printf("There was an error from the API request %s", err.Error())
} else {
// continues [1] ...
}

De url variabel är slutpunkten du skickar begäran till. De Skaffa sig metoden tar in URL:en, kör Skaffa sig begäran och returnerar svaret, inklusive dess rubriker och brödtext.

Du kan hantera eventuella fel från begäran beroende på dina krav. Om det inte finns några fel kan du fortsätta att extrahera den information du behöver från Skaffa sig begäran.

} else { 
// ... [1] continued
responseData, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Printf("There was an error from parsing the request body %s", err.Error())
} else {
// continues [2] ...
}
}

Svaret är Kropp fältet innehåller svaret. Använda Läs allt metod för ioutil paketet kan du läsa svarstexten och hantera eventuella fel.

} else { 
// ... [2] continued
fmt.Println(string(responseData))
}

De annan uttalande skriver ut svarstexten till din konsol om det inte finns några fel från läsoperationen.

Här är resultatet av SKAFFA SIG begäran till httpbins slutpunkt.

  resultat från GET-begäran

En enkel POST-förfrågan på gång

Typiska POST-förfrågningar ger datanyttolaster till servern, och servern returnerar ett svar beroende på operationen.

kan du köpa musik på spotify

Här är en enkel struktur för att koda en JSON-nyttolast till servern som en del av POST-begäran.

type JSON struct { 
info string
message string
}

De JSON struct har info och meddelande strängfält och du initierar en struct-instans för begäran.

url := "https://httpbin.org/post" 

jsonInstance := JSON {
info: "expecting success",
message: "the request should return ",
}

De url variabel lagrar POST-begärans slutpunkt från httpbin-webbplatsen. De jsonInstance variabel är en instans av JSON-strukturen som du kan använda för att lagra och skicka strukturerad data.

Du kan använda Marskalk metod från json paket för att formatera JSON för begäran.

FF0ED9650D2AC350A71C4CE143C44932222296432

De Marskalk metod returnerar också ett fel som du kan hantera. Om det inte finns några fel med JSON-rangeringsoperationen kan du fortsätta att göra POST-begäran.

Du kan använda Posta metod för att göra POST-förfrågningar. De Posta metoden tar in URL-slutpunkten, begärans innehållstyp och en buffert för nyttolasten. Det returnerar svaret och ett fel.

} else { 
// ... continued [1]
response, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))

if err != nil {
fmt.Println("there was an error with the request", err.Error())
} else {
// continues [2] ...
}
}

Återigen kan du läsa svarstexten med hjälp av Läs allt metod för ioutil paket:

} else { 
// ... continued [2]
data, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Println("there was an error reading the request body", err.Error())
} else {
fmt.Println(string(data))
}
}

De Println satsen matar ut resultatet av HTTP-förfrågan till din konsol.

Som den httpbin dokumentation anger, returnerar denna POST-slutpunkt de begärandata som du skickar den.

  resultat från POST-begäran

Att bygga webbappar i Go är enkelt

Du kan bygga webbapplikationer med olika funktioner i Go utan beroenden.

De http paketet har de funktioner du behöver för de flesta av dina operationer. Du kan använda detta paket med andra som json paket för JSON-operationer, den sammanhang paket för signalering, och mallpaket för mall. Det finns många andra paket i standardbiblioteket.