RESTful API-k fogyasztása a Go segítségével

RESTful API-k fogyasztása a Go segítségével

A RESTful API-k népszerű architektúrák az interneten keresztüli adatátvitelhez. A RESTful API-k általában HTTP-t használnak, így alkalmasak azokra az esetekre, amikor az állapottalanság fontos.





Mint minden szerveroldali nyelv, a Go alkalmazásban is kommunikálhat a HTTP protokollal, és HTTP-kéréseket hajthat végre.





Az első lépések RESTful API-k használata a Go-ban

Az http csomag biztosítja a legtöbb olyan funkciót, amelyre szüksége van a HTTP protokollal való interakcióhoz a Go alkalmazásban. Ez magában foglalja a HTTP-kéréseket is, és nem feltétlenül kell külső függőségek, például Gin vagy adatbázis .





mit jelent az alkalmazásvásárlás
MAKEUSEOF A NAP VIDEÓJA

Használhatja a http csomag az API-k használatához és az oldalak lekéréséhez webkaparás a Go-ban .

Importálja ezeket a csomagokat a HTTP-kérések indításához a Go alkalmazásban.



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

Használja a bájtok csomagot a bájtszeletek manipulálásához, a json csomag a kérési adatok formázásához, a fmt csomag szabványos kimenetre írható, a ioutil csomag a bemenethez és a kimenethez, valamint a http csomag kérések küldéséhez.

Egy egyszerű GET-kérés a Go-ban

Tipikus KAP adatokat kér egy szerverről, és paramétereket biztosíthat az adatokhoz az API természetétől és specifikációjától függően.





Ebből az oktatóanyagból megtudhatja, hogyan használjon RESTful API-kat a httpbin egyszerű kérés és válasz szolgáltatásával.

Íme egy példa HTTP-kérés indítására a Go segítségével:





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] ...
}

Az url változó az a végpont, amelyre a kérést küldi. Az Kap metódus beveszi az URL-t, végrehajtja a Kap kérést, és visszaadja a választ, beleértve a fejlécet és a törzset is.

A kérésből származó hibákat az Ön igényei szerint kezelheti. Ha nincs hiba, akkor folytathatja a szükséges információk kinyerését a Kap kérés.

} 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] ...
}
}

A válasz Test mező tartja a válasz törzsét. Használni a Mindent olvas módszere a ioutil csomagot, elolvashatja a válasz törzsét, és kezelheti az esetleges hibákat.

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

Az más utasítás kiírja a válasz törzsét a konzolra, ha nincs hiba az olvasási műveletből.

Íme az eredménye a KAP kérést a httpbin végpontjához.

  a GET kérés eredménye

Egy egyszerű POST-kérés a Go-ban

A tipikus POST kérések adatterhelést biztosítanak a kiszolgálónak, és a szerver a művelettől függően választ ad vissza.

Íme egy egyszerű struktúra egy JSON-adattartalom kódolásához a kiszolgálóra a POST-kérés részeként.

type JSON struct { 
info string
message string
}

Az JSON struktúra rendelkezik a info és üzenet karakterlánc mezőket, és inicializál egy struct példányt a kéréshez.

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

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

Az url változó tárolja a POST kérés végpontját a httpbin webhelyről. Az jsonInstance A változó a JSON-struktúra egy példánya, amelyet strukturált adatok tárolására és küldésére használhat.

Használhatja a Marsall módszer a json csomagot a kérelem JSON formázásához.

jsonData, err := json.Marshal(jsonInstance) 
if err != nil {
fmt.Println("there was an error with the JSON", err.Error())
} else {
// continues [1] ...
}

Az Marsall metódus is kezelhető hibát ad vissza. Ha nincs hiba a JSON-rendezési művelettel kapcsolatban, folytathatja a POST-kérés végrehajtását.

Használhatja a Hozzászólás módszer a POST kérések elkészítésére. Az Hozzászólás metódus veszi az URL-végpontot, a kérés tartalomtípusát és a rakomány pufferét. Visszaadja a választ és egy hibát.

} 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] ...
}
}

Ismét elolvashatja a válasz törzsét a Mindent olvas módszere a ioutil csomag:

} 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))
}
}

Az Println utasítás kiadja a HTTP-kérés eredményét a konzolra.

Ahogy a httpbin dokumentáció meghatározza, ez a POST-végpont visszaadja az elküldött kérési adatokat.

  a POST kérés eredménye

Webalkalmazások létrehozása a Go-ban egyszerű

Különféle funkciókkal rendelkező webalkalmazásokat készíthet a Go-ban függőségek nélkül.

Az http csomag tartalmazza azokat a funkciókat, amelyekre a legtöbb művelethez szüksége lesz. Ezt a csomagot másokkal is használhatja, mint a json csomag a JSON műveletekhez, a kontextus csomag a jelzéshez, a sabloncsomag pedig a sablonozáshoz. Sok más csomag is található a szabványos könyvtárban.