RESTful APIer er populære arkitekturer for dataoverføring over nettet. RESTful APIer bruker vanligvis HTTP, noe som gjør dem egnet for tilfeller der statsløshet er viktig.

Som ethvert serversidespråk kan du samhandle med HTTP-protokollen og gjøre HTTP-forespørsler i Go.

Komme i gang Bruk av RESTful APIer i farten

De http pakken gir det meste av funksjonaliteten du trenger for å samhandle med HTTP-protokollen i Go. Dette inkluderer å gjøre HTTP-forespørsler, og du trenger ikke nødvendigvis eksterne avhengigheter, som Gin eller en database.

Du kan bruke http pakke for å konsumere APIer og hente sider for nettskraping i Go.

Importer disse pakkene for å begynne å lage HTTP-forespørsler i Go.

import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)

Du vil bruke bytes pakke for å manipulere byte-skiver, den json pakke for å formatere forespørselsdata, den fmt pakke for å skrive til standard utgang, den ioutil pakke for input og output, og http pakke for å sende forespørsler.

En enkel GET-forespørsel på gang

instagram viewer

Typisk ber om lesedata fra en server og kan gi parametere for dataene avhengig av API-ets art og spesifikasjon.

I denne opplæringen lærer du hvordan du bruker RESTful APIer ved å bruke httpbins enkle forespørsels- og svartjeneste.

Her er et eksempel på å lage en HTTP-forespørsel med Go:

url := "https://httpbin.org/get"
svar, feil := http. Hent (url)

hvis feil!= null {
fmt. Printf("Det oppsto en feil fra API-forespørselen %s", err. Feil())
} ellers {
// fortsetter [1] ...
}

De url variabel er endepunktet du sender forespørselen til. De metoden tar inn URL-en, utfører forespørsel, og returnerer svaret, inkludert overskrifter og brødtekst.

Du kan håndtere eventuelle feil fra forespørselen avhengig av dine behov. Hvis det ikke er noen feil, kan du fortsette å trekke ut informasjonen du trenger fra be om.

} ellers {
//... [1] fortsatte
responseData, feil := ioutil. Les alle (svar. Kropp)

hvis feil!= null {
fmt. Printf("Det oppsto en feil ved å analysere forespørselsteksten %s", err. Feil())
} ellers {
// fortsetter [2] ...
}
}

Responsen er Kropp feltet inneholder kroppen til svaret. Bruker Les alle metoden for ioutil pakken, kan du lese svarteksten og håndtere mulige feil.

} ellers {
//... [2] fortsatte
fmt. Println(streng(responsdata))
}

De ellers statement skriver ut svarteksten til konsollen din hvis det ikke er noen feil fra leseoperasjonen.

Her er resultatet av forespørsel til httpbins endepunkt.

En enkel POST-forespørsel på gang

Typiske POST-forespørsler gir datanyttelast til serveren, og serveren returnerer et svar avhengig av operasjonen.

Her er en enkel struktur for å kode en JSON-nyttelast til serveren som en del av POST-forespørselen.

type JSON struktur {
info streng
beskjed streng
}

De JSON struct har info og beskjed strengfelt, og du vil initialisere en strukturforekomst for forespørselen.

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

jsonInstance := JSON {
info: "forventer suksess",
melding: "forespørselen skal komme tilbake ",
}

De url variabel lagrer POST-forespørselsendepunktet fra httpbin-nettstedet. De jsonInstance variabel er en forekomst av JSON-strukturen du kan bruke til å lagre og sende strukturerte data.

Du kan bruke Marskalk metode fra json pakke for å formatere JSON for forespørselen.

jsonData, feil := json. Marshal (jsonInstance)
hvis feil!= null {
fmt. Println("det var en feil med JSON", err. Feil())
} ellers {
// fortsetter [1] ...
}

De Marskalk metoden returnerer også en feil du kan håndtere. Hvis det ikke er noen feil med JSON-rangeringsoperasjonen, kan du fortsette med å sende POST-forespørselen.

Du kan bruke Post metode for å lage POST-forespørsler. De Post metoden tar inn URL-endepunktet, forespørselens innholdstype og en buffer av nyttelasten. Det returnerer svaret og en feil.

} ellers {
//... fortsatte [1]
svar, feil := http. Post (url, "application/json", bytes. NewBuffer (jsonData))

hvis feil!= null {
fmt. Println("det var en feil med forespørselen", err. Feil())
} ellers {
// fortsetter [2] ...
}
}

Igjen kan du lese svarteksten ved å bruke Les alle metoden for ioutil pakke:

} ellers {
//... fortsatte [2]
data, feil := ioutil. Les alle (svar. Kropp)

hvis feil!= null {
fmt. Println("det oppstod en feil ved lesing av forespørselsteksten", err. Feil())
} ellers {
fmt. Println(streng(data))
}
}

De Println setningen sender ut resultatet av HTTP-forespørselen til konsollen din.

Som httpbin dokumentasjon spesifiserer, returnerer dette POST-endepunktet forespørselsdataene du sender det.

Det er enkelt å bygge nettapper på farten

Du kan bygge nettapplikasjoner med ulike funksjoner i Go uten avhengigheter.

De http pakken har funksjonene du trenger for de fleste operasjonene dine. Du kan bruke denne pakken med andre som json pakken for JSON-operasjoner, den kontekst pakke for signalering, og malpakken for maling. Det er mange andre pakker i standardbiblioteket.