API-ji RESTful so priljubljene arhitekture za prenos podatkov po spletu. API-ji RESTful običajno uporabljajo HTTP, zaradi česar so primerni za primere, ko je apatridnost pomembna.

Kot kateri koli jezik na strani strežnika lahko tudi v Go komunicirate s protokolom HTTP in postavljate zahteve HTTP.

Kako začeti uporabljati API-je RESTful v Go

The http ponuja večino funkcionalnosti, ki jih boste potrebovali za interakcijo s protokolom HTTP v Go. To vključuje izdelovanje zahtev HTTP in ni nujno, da jih potrebujete zunanje odvisnosti, kot je Gin ali baza podatkov.

Lahko uporabite http paket za uporabo API-jev in pridobivanje strani spletno strganje v Go.

Uvozite te pakete, da začnete postavljati zahteve HTTP v Go.

uvoz (
"bajti"
"kodiranje/json"
"fmt"
"io/ioutil"
"net/http"
)

Uporabili boste bajtov paket za manipulacijo rezin bajtov, json paket za oblikovanje podatkov zahteve, the fmt paket za pisanje v standardni izhod, the ioutil paket za vhod in izhod ter http paket za pošiljanje povpraševanj.

Preprosta zahteva GET v Go

instagram viewer

Tipično DOBITI zahteve berejo podatke s strežnika in lahko zagotovijo parametre za podatke glede na naravo in specifikacijo API-ja.

V tej vadnici se boste naučili, kako uporabljati API-je RESTful z uporabo preproste storitve zahtev in odgovorov httpbin.

Tu je primer izdelave zahteve HTTP z Go:

url := "https://httpbin.org/get"
odgovor, napaka := http. Pridobi (url)

če napaka!= nič {
fmt. Printf("Prišlo je do napake v API zahtevi %s", napaka. Napaka())
} drugače {
// nadaljuje [1] ...
}

The url spremenljivka je končna točka, ki ji pošiljate zahtevo. The Dobiti metoda sprejme URL, izvede Dobiti zahtevo in vrne odgovor, vključno z njegovimi glavami in telesom.

Vse napake iz zahteve lahko obravnavate glede na vaše zahteve. Če ni napak, lahko nadaljujete z izvlečkom informacij, ki jih potrebujete Dobiti prošnja.

} drugače {
//... [1] nadaljevanje
responseData, err := ioutil. ReadAll (odgovor. telo)

če napaka!= nič {
fmt. Printf("Pri razčlenjevanju telesa zahteve %s je prišlo do napake", napaka. Napaka())
} drugače {
// nadaljuje [2] ...
}
}

Odziv je Telo polje vsebuje telo odgovora. Uporabljati ReadAll metoda ioutil paket, lahko preberete telo odgovora in obravnavate morebitne napake.

} drugače {
//... [2] nadaljevanje
fmt. Println(vrvica(responseData))
}

The drugače stavek natisne telo odgovora na vašo konzolo, če ni nobenih napak pri operaciji branja.

Tukaj je rezultat DOBITI zahtevo do končne točke httpbin.

Preprosta zahteva POST v Go

Običajne zahteve POST posredujejo strežniku koristne podatke, strežnik pa vrne odgovor, odvisno od operacije.

Tukaj je preprosta struktura za kodiranje tovora JSON v strežnik kot del zahteve POST.

vrsta JSON struct {
info vrvica
sporočilo vrvica
}

The JSON struct ima info in sporočilo polja nizov in inicializirali boste primerek strukture za zahtevo.

url := "https://httpbin.org/post"

jsonInstance := JSON {
info: "v pričakovanju uspeha",
sporočilo: "zahteva naj vrnitev ",
}

The url spremenljivka shrani končno točko zahteve POST s spletnega mesta httpbin. The jsonInstance spremenljivka je primerek strukture JSON, ki jo lahko uporabite za shranjevanje in pošiljanje strukturiranih podatkov.

Lahko uporabite maršal metoda iz json paket za formatiranje JSON za zahtevo.

jsonData, napaka := json. Marshal (jsonInstance)
če napaka!= nič {
fmt. Println("prišlo je do napake z JSON", err. Napaka())
} drugače {
// nadaljuje [1] ...
}

The maršal metoda vrne tudi napako, ki jo lahko obravnavate. Če pri operaciji razvrščanja JSON ni napak, lahko nadaljujete z zahtevo POST.

Lahko uporabite Objavi način za izdelavo zahtev POST. The Objavi metoda prevzame končno točko URL-ja, vrsto vsebine zahteve in vmesni pomnilnik koristnega tovora. Vrne odgovor in napako.

} drugače {
//... nadaljevanje [1]
odgovor, napaka := http. Objava (url, "aplikacija/json", bajt. NewBuffer (jsonData))

če napaka!= nič {
fmt. Println("prišlo je do napake pri zahtevi", napaka. Napaka())
} drugače {
// nadaljuje [2] ...
}
}

Spet lahko preberete telo odgovora z uporabo ReadAll metoda ioutil paket:

} drugače {
//... nadaljevanje [2]
podatki, napaka := ioutil. ReadAll (odgovor. telo)

če napaka!= nič {
fmt. Println("pri branju telesa zahteve je prišlo do napake", err. Napaka())
} drugače {
fmt. Println(vrvica(podatki))
}
}

The Println stavek izpiše rezultat zahteve HTTP na vašo konzolo.

Kot je httpbin dokumentacijo določa, ta končna točka POST vrne podatke zahteve, ki jih pošljete.

Gradnja spletnih aplikacij v Go je enostavna

V Go lahko izdelate spletne aplikacije z različnimi funkcijami brez odvisnosti.

The http paket ima funkcije, ki jih boste potrebovali za večino svojih operacij. Ta paket lahko uporabljate z drugimi podobnimi json paket za operacije JSON, the kontekstu paket za signalizacijo in paket predlog za predloge. V standardni knjižnici je veliko drugih paketov.