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ásMAKEUSEOF 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.
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.
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.