RESTful API'er er populære arkitekturer til dataoverførsel på tværs af nettet. RESTful API'er bruger typisk HTTP, hvilket gør dem velegnede til tilfælde, hvor statsløshed er vigtig.
Som ethvert sprog på serversiden kan du interagere med HTTP-protokollen og lave HTTP-anmodninger i Go.
Kom godt i gang Brug af RESTful API'er i farten
Det http pakken giver det meste af den funktionalitet, du skal bruge for at interagere med HTTP-protokollen i Go. Dette inkluderer at lave HTTP-anmodninger, og du behøver ikke nødvendigvis eksterne afhængigheder, som Gin eller en database.
Du kan bruge http pakke til at forbruge API'er og hente sider for webskrabning i Go.
Importer disse pakker for at begynde at lave HTTP-anmodninger i Go.
importere (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
Du vil bruge bytes pakke til at manipulere byte-skiver, den json pakke til at formatere anmodningsdata, den fmt pakke til at skrive til standard output, den ioutil pakke til input og output, og http pakke til afsendelse af forespørgsler.
En simpel GET-anmodning på vej
Typisk FÅ anmoder om læsedata fra en server og kan levere parametre for dataene afhængigt af API'ens art og specifikation.
I denne vejledning lærer du, hvordan du bruger RESTful API'er ved hjælp af httpbins enkle anmodnings- og svartjeneste.
Her er et eksempel på at lave en HTTP-anmodning med Go:
url := "https://httpbin.org/get"
svar, fejl := http. Hent (url)
hvis fejl!= nul {
fmt. Printf("Der var en fejl fra API-anmodningen %s", err. Fejl())
} andet {
// fortsætter [1] ...
}
Det url variabel er det slutpunkt, du sender anmodningen til. Det Få metode tager URL'en ind, udfører Få anmodning og returnerer svaret, inklusive dets overskrifter og brødtekst.
Du kan håndtere eventuelle fejl fra anmodningen afhængigt af dine krav. Hvis der ikke er nogen fejl, kan du fortsætte med at udtrække de oplysninger, du har brug for, fra Få anmodning.
} andet {
//... [1] fortsatte
responseData, fejl := ioutil. Læs Alle (svar. Legeme)
hvis fejl!= nul {
fmt. Printf("Der opstod en fejl under parsing af anmodningens tekst %s", err. Fejl())
} andet {
// fortsætter [2] ...
}
}
Svaret er Legeme felt indeholder svarets krop. Bruger LæsAlle metoden til ioutil pakke, kan du læse svarteksten og håndtere mulige fejl.
} andet {
//... [2] fortsatte
fmt. Println(snor(responsdata))
}
Det andet statement udskriver svarteksten til din konsol, hvis der ikke er nogen fejl fra læsehandlingen.
Her er resultatet af FÅ anmodning til httpbins slutpunkt.
En simpel POST-anmodning på vej
Typiske POST-anmodninger giver datanyttelast til serveren, og serveren returnerer et svar afhængigt af handlingen.
Her er en simpel struktur til kodning af en JSON-nyttelast til serveren som en del af POST-anmodningen.
type JSON struktur {
info snor
besked snor
}
Det JSON struct har info og besked strengfelter, og du initialiserer en struct-instans for anmodningen.
url := "https://httpbin.org/post"
jsonInstance := JSON {
info: "forventer succes",
besked: "anmodningen skal Vend tilbage ",
}
Det url variabel gemmer POST-anmodningsslutpunktet fra httpbin-webstedet. Det jsonInstance variabel er en forekomst af JSON-strukturen, du kan bruge til at gemme og sende strukturerede data.
Du kan bruge Marskal metode fra json pakke til at formatere JSON for anmodningen.
jsonData, fejl := json. Marshal (jsonInstance)
hvis fejl!= nul {
fmt. Println("der var en fejl med JSON", err. Fejl())
} andet {
// fortsætter [1] ...
}
Det Marskal metoden returnerer også en fejl, du kan håndtere. Hvis der ikke er nogen fejl med JSON-marshaleringsoperationen, kan du fortsætte med at lave POST-anmodningen.
Du kan bruge Stolpe metode til at lave POST-anmodninger. Det Stolpe metoden tager URL-slutpunktet, anmodningens indholdstype og en buffer af nyttelasten ind. Det returnerer svaret og en fejl.
} andet {
//... fortsat [1]
svar, fejl := http. Post (url, "application/json", bytes. NewBuffer (jsonData))
hvis fejl!= nul {
fmt. Println("der var en fejl med anmodningen", err. Fejl())
} andet {
// fortsætter [2] ...
}
}
Igen kan du læse svarteksten ved hjælp af LæsAlle metoden til ioutil pakke:
} andet {
//... fortsat [2]
data, fejl := ioutil. Læs Alle (svar. Legeme)
hvis fejl!= nul {
fmt. Println("der opstod en fejl ved læsning af anmodningens tekst", err. Fejl())
} andet {
fmt. Println(snor(data))
}
}
Det Udskrivln sætning udsender resultatet af HTTP-anmodningen til din konsol.
Som httpbin dokumentation specificerer, returnerer dette POST-slutpunkt de anmodningsdata, du sender det.
Det er nemt at bygge webapps på farten
Du kan bygge webapplikationer med forskellige funktioner i Go uden afhængigheder.
Det http pakken har de funktioner, du skal bruge til de fleste af dine operationer. Du kan bruge denne pakke med andre som f.eks json pakke til JSON-operationer, den sammenhæng pakke til signalering, og skabelonpakken til skabelon. Der er mange andre pakker i standardbiblioteket.