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.
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 (
"bájt"
"kódolás/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"
válasz, hiba := http. Get (url)
ha hiba! = nulla {
fmt. Printf("Hiba történt a %s API kérésből", hiba. Hiba())
} más {
// folytatódik [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.
} más {
//... [1] folytatta
responseData, err := ioutil. Mindent olvas (válasz. Test)
ha hiba! = nulla {
fmt. Printf("Hiba történt a %s kéréstörzs elemzése során", hiba. Hiba())
} más {
// folytatódik [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.
} más {
//... [2] folytatás
fmt. Println(húr(válaszadat))
}
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.
típus JSON struct {
info húr
üzenet húr
}
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: "sikerre számítunk",
üzenet: "a kérésnek kell Visszatérés ",
}
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)
ha hiba! = nulla {
fmt. Println("hiba történt a JSON-ban", err. Hiba())
} más {
// folytatódik [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.
} más {
//... folytatás [1]
válasz, hiba := http. Hozzászólás (url, "application/json", bájt. NewBuffer (jsonData))
ha hiba! = nulla {
fmt. Println("hiba történt a kéréssel", err. Hiba())
} más {
// folytatódik [2] ...
}
}
Ismét elolvashatja a válasz törzsét a Mindent olvas módszere a ioutil csomag:
} más {
//... folytatás [2]
adatok, err := ioutil. Mindent olvas (válasz. Test)
ha hiba! = nulla {
fmt. Println("hiba történt a kéréstörzs olvasásakor", err. Hiba())
} más {
fmt. Println(húr(adat))
}
}
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.