RESTful API-ji popularne su arhitekture za prijenos podataka preko weba. RESTful API-ji obično koriste HTTP, što ih čini prikladnima za slučajeve kada je apatridnost važna.
Kao i svaki drugi jezik na strani poslužitelja, možete komunicirati s HTTP protokolom i slati HTTP zahtjeve u Go.
Početak upotrebe RESTful API-ja u Go
The http pruža većinu funkcionalnosti koje ćete trebati za interakciju s HTTP protokolom u Go. To uključuje upućivanje HTTP zahtjeva, a ne morate nužno vanjske ovisnosti, poput Gin-a ili baze podataka.
Možete koristiti http paket za korištenje API-ja i dohvaćanje stranica struganje weba u Gou.
Uvezite ove pakete da biste počeli slati HTTP zahtjeve u Go.
uvoz (
"bajtovi"
"kodiranje/json"
"fmt"
"io/ioutil"
"net/http"
)
Vi ćete koristiti bajtova paket za manipuliranje rezovima bajtova, json paket za formatiranje podataka zahtjeva, the fmt paket za pisanje na standardni izlaz, the ioutil paket za ulaz i izlaz, i http paket za slanje zahtjeva.
Jednostavan GET zahtjev u Gou
Tipično
DOBITI zahtjevi čitaju podatke s poslužitelja i mogu dati parametre za podatke ovisno o prirodi i specifikaciji API-ja.U ovom vodiču naučit ćete kako koristiti RESTful API-je pomoću httpbinove jednostavne usluge zahtjeva i odgovora.
Evo primjera postavljanja HTTP zahtjeva s Go:
url := "https://httpbin.org/get"
odgovor, greška := http. Dobiti (url)
ako pogriješiti != nula {
fmt. Printf("Došlo je do pogreške iz API zahtjeva %s", err. Greška())
} drugo {
// nastavlja se [1] ...
}
The url varijabla je krajnja točka kojoj šaljete zahtjev. The Dobiti metoda uzima URL, izvršava Dobiti zahtjev i vraća odgovor, uključujući njegova zaglavlja i tijelo.
Možete obraditi sve pogreške iz zahtjeva ovisno o vašim zahtjevima. Ako nema pogrešaka, možete nastaviti s izdvajanjem informacija koje su vam potrebne iz Dobiti zahtjev.
} drugo {
//... [1] nastavak
responseData, err := ioutil. ReadAll (odgovor. Tijelo)
ako pogriješiti != nula {
fmt. Printf("Došlo je do pogreške prilikom analiziranja tijela zahtjeva %s", pogreška. Greška())
} drugo {
// nastavlja se [2] ...
}
}
Odgovor je Tijelo polje sadrži tijelo odgovora. Koristiti ReadAll metoda ioutil paket, možete pročitati tijelo odgovora i riješiti moguće pogreške.
} drugo {
//... [2] nastavak
fmt. Println(niz(podaci odgovora))
}
The drugo naredba ispisuje tijelo odgovora na vašu konzolu ako nema grešaka iz operacije čitanja.
Evo rezultata DOBITI zahtjev httpbin-ovoj krajnjoj točki.
Jednostavan POST zahtjev u Gou
Tipični POST zahtjevi poslužitelju pružaju podatke, a poslužitelj vraća odgovor ovisno o operaciji.
Evo jednostavne strukture za kodiranje JSON korisnih podataka na poslužitelj kao dio POST zahtjeva.
tip JSON strukturirati {
info niz
poruka niz
}
The JSON struct ima info i poruka string polja i inicijalizirat ćete instancu strukture za zahtjev.
url := "https://httpbin.org/post"
jsonInstance := JSON {
info: "očekujem uspjeh",
poruka: "zahtjev bi trebao povratak ",
}
The url varijabla pohranjuje krajnju točku POST zahtjeva s web stranice httpbin. The jsonInstance varijabla je instanca JSON strukture koju možete koristiti za pohranu i slanje strukturiranih podataka.
Možete koristiti Maršal metoda iz json paket za formatiranje JSON-a za zahtjev.
jsonData, pogreška := json. Marshal (jsonInstance)
ako pogriješiti != nula {
fmt. Println("došlo je do pogreške s JSON-om", err. Greška())
} drugo {
// nastavlja se [1] ...
}
The Maršal metoda također vraća pogrešku koju možete riješiti. Ako nema pogrešaka s JSON marshaling operacijom, možete nastaviti s POST zahtjevom.
Možete koristiti Post metoda za izradu POST zahtjeva. The Post metoda uzima krajnju točku URL-a, vrstu sadržaja zahtjeva i međuspremnik sadržaja. Vraća odgovor i pogrešku.
} drugo {
//... nastavak [1]
odgovor, greška := http. Post (url, "application/json", bajt. NewBuffer (jsonData))
ako pogriješiti != nula {
fmt. Println("došlo je do pogreške sa zahtjevom", err. Greška())
} drugo {
// nastavlja se [2] ...
}
}
Opet, tijelo odgovora možete pročitati pomoću ReadAll metoda ioutil paket:
} drugo {
//... nastavak [2]
podaci, pogreška := ioutil. ReadAll (odgovor. Tijelo)
ako pogriješiti != nula {
fmt. Println("došlo je do pogreške pri čitanju tijela zahtjeva", err. Greška())
} drugo {
fmt. Println(niz(podaci))
}
}
The Println izjava ispisuje rezultat HTTP zahtjeva na vašu konzolu.
Kao httpbin dokumentacija navodi, ova krajnja točka POST-a vraća podatke zahtjeva koje ste joj poslali.
Izrada web aplikacija u Go je jednostavna
Možete izraditi web aplikacije s različitim funkcijama u Go bez ovisnosti.
The http paket ima funkcije koje će vam trebati za većinu vaših operacija. Ovaj paket možete koristiti s drugima poput json paket za JSON operacije, kontekst paket za signalizaciju i paket predložaka za izradu predložaka. Postoje mnogi drugi paketi u standardnoj knjižnici.