RESTful API sú populárne architektúry na prenos údajov cez web. Rozhrania RESTful API zvyčajne používajú protokol HTTP, vďaka čomu sú vhodné v prípadoch, keď je dôležitá nestavovosť.
Ako každý jazyk na strane servera môžete v Go interagovať s protokolom HTTP a vytvárať požiadavky HTTP.
Začíname s používaním RESTful API v Go
The http poskytuje väčšinu funkcií, ktoré budete potrebovať na interakciu s protokolom HTTP v Go. To zahŕňa vytváranie požiadaviek HTTP, ktoré nevyhnutne nepotrebujete externé závislosti, ako je Gin alebo databáza.
Môžete použiť http balík na používanie rozhraní API a načítanie stránok zoškrabovanie webu v Go.
Importujte tieto balíky a začnite vytvárať požiadavky HTTP v Go.
importovať (
"bajty"
"kódovanie/json"
"fmt"
"io/ioutil"
"net/http"
)
Budete používať bajtov balík na manipuláciu s bajtovými rezmi, json balík na formátovanie údajov žiadosti, fmt balík na zápis na štandardný výstup, ioutil balík pre vstup a výstup a http balík na odosielanie žiadostí.
Jednoduchá žiadosť GET in Go
Typické GET požaduje čítanie údajov zo servera a môže poskytnúť parametre údajov v závislosti od povahy a špecifikácie API.
V tomto návode sa dozviete, ako používať RESTful API pomocou jednoduchej služby žiadostí a odpovedí httpbin.
Tu je príklad vytvorenia požiadavky HTTP pomocou Go:
url := "https://httpbin.org/get"
odpoveď, chyba := http. Získať (url)
ak chyba!= nula {
fmt. Printf("Vyskytla sa chyba v požiadavke API %s", chyba. Chyba())
} inak {
// pokračuje [1] ...
}
The url premenná je koncový bod, do ktorého odosielate požiadavku. The Získajte metóda prevezme URL, vykoná Získajte žiadosť a vráti odpoveď vrátane jej hlavičiek a tela.
Prípadné chyby zo žiadosti môžete spracovať v závislosti od vašich požiadaviek. Ak sa nevyskytnú žiadne chyby, môžete pokračovať v extrahovaní potrebných informácií z Získajte žiadosť.
} inak {
//... [1] pokračoval
responseData, err := ioutil. ReadAll (odpoveď. telo)
ak chyba!= nula {
fmt. Printf("Pri analýze tela požiadavky %s sa vyskytla chyba", chyba. Chyba())
} inak {
// pokračuje [2] ...
}
}
Odpoveď je Telo pole obsahuje telo odpovede. Pomocou ReadAll metóda ioutil balík, môžete si prečítať telo odpovede a vyriešiť prípadné chyby.
} inak {
//... [2] pokračoval
fmt. Println(reťazec(responseData))
}
The inak príkaz vytlačí telo odpovede do vašej konzoly, ak z operácie čítania nie sú žiadne chyby.
Tu je výsledok GET žiadosť na koncový bod httpbin.
Jednoduchá POST žiadosť v Go
Typické požiadavky POST poskytujú serverom užitočné zaťaženie údajov a server vracia odpoveď v závislosti od operácie.
Tu je jednoduchá štruktúra na kódovanie užitočného zaťaženia JSON na server ako súčasť požiadavky POST.
typu JSON štrukturovať {
Info reťazec
správu reťazec
}
The JSON struct má Info a správu string polia a inicializujete inštanciu štruktúry pre požiadavku.
url := "https://httpbin.org/post"
jsonInstance := JSON {
info: "očakávanie úspechu",
správa: „žiadosť by mala vrátiť ",
}
The url premenná ukladá koncový bod požiadavky POST z webovej stránky httpbin. The jsonInstance premenná je inštanciou štruktúry JSON, ktorú môžete použiť na ukladanie a odosielanie štruktúrovaných údajov.
Môžete použiť maršal metóda z json balík na formátovanie JSON pre požiadavku.
jsonData, chyba := json. Marshal (jsonInstance)
ak chyba!= nula {
fmt. Println("vyskytla sa chyba s JSON", chyba. Chyba())
} inak {
// pokračuje [1] ...
}
The maršal metóda tiež vráti chybu, ktorú môžete zvládnuť. Ak sa pri operácii zaraďovania JSON nevyskytnú žiadne chyby, môžete pokračovať vo vytváraní požiadavky POST.
Môžete použiť Príspevok spôsob vytvárania požiadaviek POST. The Príspevok metóda preberá koncový bod adresy URL, typ obsahu požiadavky a vyrovnávaciu pamäť užitočného zaťaženia. Vráti odpoveď a chybu.
} inak {
//... pokračovanie [1]
odpoveď, chyba := http. Príspevok (url, "application/json", bajty. NewBuffer (jsonData))
ak chyba!= nula {
fmt. Println("vyskytla sa chyba s požiadavkou", err. Chyba())
} inak {
// pokračuje [2] ...
}
}
Opäť si môžete prečítať telo odpovede pomocou ReadAll metóda ioutil balík:
} inak {
//... pokračovanie [2]
údaje, chyba := ioutil. ReadAll (odpoveď. telo)
ak chyba!= nula {
fmt. Println("vyskytla sa chyba pri čítaní tela požiadavky", chyba. Chyba())
} inak {
fmt. Println(reťazec(údaje))
}
}
The Println výpis vypíše výsledok HTTP požiadavky do vašej konzoly.
Ako httpbin dokumentácia špecifikuje, že tento koncový bod POST vráti údaje požiadavky, ktoré mu odošlete.
Vytváranie webových aplikácií v Go je jednoduché
V Go môžete vytvárať webové aplikácie s rôznymi funkciami bez závislostí.
The http balík má funkcie, ktoré budete potrebovať pre väčšinu svojich operácií. Tento balík môžete použiť s inými ako napr json balík pre operácie JSON, kontext balík pre signalizáciu a balík šablón pre šablóny. V štandardnej knižnici je mnoho ďalších balíkov.