Upotreba RESTful API-ja uz Go

Upotreba RESTful API-ja uz Go

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.

  rezultat GET zahtjeva

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.

  rezultat POST zahtjeva

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.