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

instagram viewer
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.