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.
kako uočiti ruskog bota na facebooku
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 .
MAKEUSEOF VIDEO DANA
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.
import (
"bytes"
"encoding/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"
response, err := http.Get(url)
if err != nil {
fmt.Printf("There was an error from the API request %s", err.Error())
} else {
// continues [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.
} 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] ...
}
}
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.
} else {
// ... [2] continued
fmt.Println(string(responseData))
}
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.
type JSON struct {
info string
message string
}
The JSON struct ima info i poruka string polja i inicijalizirat ćete instancu strukture za zahtjev.
url := "https://httpbin.org/post"
jsonInstance := JSON {
info: "expecting success",
message: "the request should return ",
}
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, err := json.Marshal(jsonInstance)
if err != nil {
fmt.Println("there was an error with the JSON", err.Error())
} else {
// continues [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.
je veća brzina osvježavanja bolja
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.
} 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] ...
}
}
Opet, tijelo odgovora možete pročitati pomoću ReadAll metoda ioutil paket:
} 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))
}
}
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.