Golang HTTP -forespørsel

Golang HTTP -forespørsel

En HTTP -forespørsel refererer til en handling utført av en HTTP -klient på en spesifikk HTTP (Protocol) ressurs. Ressursen er hovedsakelig identifisert av en URL som et domenenavn eller en IP -adresse.

HTTP -forespørsler er en av de mest byggesteinene på det moderne nettet. Ved hjelp av HTTP -forespørsel kan vi be om ressurser som websider, videoer, bilder og andre filer fra en ekstern server.

I denne artikkelen lærer vi hvordan du bygger en grunnleggende HTTP -klient ved hjelp av Go Programmeringsspråket.

Krav

I denne artikkelen trenger du følgende ressurser:

  1. Gå kompilator installert på systemet ditt.
  2. Grunnleggende GO -kunnskap.
  3. En tekstredaktør.

Http få

Den første metoden vi skal implementere er http get -metoden. En GET -metode lar oss be om data fra en spesifisert ressurs. For eksempel når vi trenger å hente artikler fra Linuxhint.com server, vi bruker en get -metode.

Det første trinnet er å sikre at du konfigurerer prosjektet ditt. Hvis du ikke er kjent med hvordan du oppretter og jobber med et Go -prosjekt, kan du sjekke opplæringen vår om å installere GO.

Når prosjektet er opprettet, åpner du hovedfilen din og importer NET/HTTP -pakken fra Go Standard Library.

Net/HTTP -pakken gir oss funksjonaliteten og verktøyene for å komme med HTTP -forespørsel til eksterne servere.

Importer nett-/http -pakken ved å legge til linjen nedenfor i GO -filen.

import (
"Nett/http"
)

I nett-/http -pakken er det en GET -metode som lar oss lage HTTP Get Methods. Funksjonssyntaks er som vist nedenfor:

func get (url streng) (resp *respons, feilfeil)

Funksjonen tar en URL som argument og returnerer responsen som en peker på strukturen og en feil (hvis noen).

Hvis metoden ikke møter en feil, inneholder responsen som returneres svarorganet fra den forespurte ressursen.

For å bruke GET -metoden, kan vi lage kode som vist:

Resp, feil: = http.Få ("https: // api.SpaceXData.com/v4/lanseringer/siste ")
Hvis feil != nil
Logg.Fatal (feil)

I eksemplet over kaller vi get -metoden og gir URL -en til ressursen vi ønsker å få tilgang til som en streng.

I vårt eksempel bruker vi SpaceX API.

Som du vil legge merke til, returnerer funksjonen to verdier som vi lagrer i to variabler: RESP og feil som holder den returnerte responsen og feilen.

Husk at Resp inneholder ingenting annet enn en peker til strukturen som holder de faktiske dataene. Derfor, hvis vi prøver å skrive ut det, vil vi få en haug med virvlete data.

En eksempelutgang fra forespørselen ovenfor er som vist nedenfor:

For at vi skal se de faktiske dataene, må vi få tilgang til kroppseiendommen på strukturen som er returnert. Vi må da lese den og skrive den ut til konsollen, eller lagre den i en fil.

For dette kan vi bruke ioutil.Readme -metoden. Denne metoden er definert i Ioutil -pakken. Det returnerer responsorganet og en feil.

Merk: Etter å ha lest responsorganet, må vi lukke det for å unngå hvis fra å låse andre operasjoner i programmet ditt.

Vi kan gjøre dette ved å stille den nære metoden som skal kjøres etter at hovedfunksjonen er finbi. Utsett nøkkelordet i go kommer i hånden.

Resp.Kropp.Lukk () lar oss lukke responsorganet etter å ha lest. Når vi har lest responsorganet, kan vi skrive det ut til konsollen som implementert i koden nedenfor:

Sjekk ut opplæringen vår om Golang utsett å lære mer

pakkehoved
import (
"FMT"
"io/ioutil"
"Logg"
"Nett/http"
)
func main ()
Resp, feil: = http.Få ("https: // api.SpaceXData.com/v4/lanseringer/siste ")
Hvis feil != nil
Logg.Fatal (feil)

// Lukk kropp
utsetter resp.Kropp.Lukk()
// Les kropp
Kropp, feil: = ioutil.Leser (resp.Kropp)
Hvis feil != nil
Logg.Fatal (feil)

Ovennevnte kode implementerer en HTTP -klient i å gå i stand til å gjøre http få forespørsel til den spesifiserte metoden.

Et eksempel på returverdien er som vist:

For bedre lesbarhet kan du formatere responsen til Readable-Json-format eller utføre marskalk og unmarshal for å velge ønsket utgang.

Sjekk opplæringen vår om Json Marshal og Unmarshal for å lære mer.

HTTP -innlegg

Den neste delen av en HTTP -klient lager postmetode. En HTTP -metode lar deg sende data til serveren og utføre en handling på den spesifiserte ressursen. Dette kan skape, slette eller oppdatere en ressurs.

I GO kan vi komme med etterforespørsel ved hjelp av NET/HTTP -pakken. Det gir oss postmetoden, slik at vi kan sende data til en server.

Funksjonssyntaks er som vist nedenfor:

func post (url, contenttype string, body io.Leser) (resp *respons, feilfeil)

Funksjonen tar tre argumenter:

  1. Ressursen til ressursen.
  2. Innholdstypen på kroppen som skal sendes til serveren, en streng
  3. Forespørselsorganet av type IO.Leser

Funksjonen skal deretter returnere responsen og en feil. Husk at vi må konvertere dataene for å sende til serveren til et akseptabelt format. Vi kan gjøre dette ved å konvertere JSON -dataene til IO.Leser, som i utgangspunktet er et grensesnitt i go.

Sjekk kildekoden for å lære mer.

Konvertere JSON -data til IO.Lesertypen involverer to trinn:

Den første er å kode JSON -dataene i byte -format. Vi kan gjøre dette av Json Marshaling som diskutert i vår opplæring.

Når vi er kodet, kan vi konvertere dataene til type som implementert av IO.Lesergrensesnitt ved hjelp av nybuffermetoden. Denne metoden returnerer IO.Lesertype som vi deretter kan gi til postmetoden.

En prøvekodeblokk er som vist nedenfor:

Body, _: = json.Marskalk (kart [streng] streng
"id": "1",
"Site": "Linuxhint"
)
kodet_json: = byte.Newbuffer (kropp)

Når vi har alle delene i orden, kan vi påkalle POST -metoden til den spesifiserte ressursen. Husk at denne opplæringen bruker dummy data og lenker.

pakkehoved
import (
"byte"
"koding/json"
"FMT"
"io/ioutil"
"Logg"
"Nett/http"
)
func main ()
Body, _: = json.Marskalk (kart [streng] streng
"id": "1",
"Site": "Linuxhint"
)
Resp, feil: = http.Innlegg ("http: // eksempel.com/v4/endepunkt/post "," applikasjon/json ", kropp)
Hvis feil != nil
Logg.Fatal (feil)

utsetter resp.Kropp.Lukk()
retur_body, feil: = ioutil.Leser (resp.Kropp)
Hvis feil != nil
Logg.Fatal (feil)

fmt.Println (streng (kropp))

Ovennevnte metode implementerer en enkel HTTP -klient som kan lage HTTP -postmetoder til en spesifisert ressurs.

Konklusjon

Denne artikkelen viser deg hvordan du bygger en grunnleggende HTTP -klient ved hjelp av Go -programmeringsspråket. Go er usedvanlig raskt når det gjelder HTTP -servering. Ved å bruke kunnskapen i denne artikkelen, kan du utvide klienten til en fullførselsapplikasjon.

Fortsett koding.