RESTful API's zijn populaire architecturen voor gegevensoverdracht via internet. RESTful API's gebruiken doorgaans HTTP, waardoor ze geschikt zijn voor gevallen waarin staatloosheid belangrijk is.
Zoals elke server-side taal, kun je communiceren met het HTTP-protocol en HTTP-verzoeken doen in Go.
Aan de slag met het consumeren van RESTful API's in Go
De http pakket biedt de meeste functionaliteit die je nodig hebt voor interactie met het HTTP-protocol in Go. Dit omvat het maken van HTTP-verzoeken, en u hebt niet per se nodig externe afhankelijkheden, zoals Gin of een database.
U kunt de http pakket om API's te gebruiken en pagina's voor op te halen webschrapen in Go.
Importeer deze pakketten om te beginnen met het maken van HTTP-verzoeken in Go.
importeren (
"bytes"
"codering/json"
"fmt"
"io/ioutil"
"net/http"
)
Je gebruikt de bytes pakket om byte-plakken te manipuleren, de json pakket om verzoekgegevens te formatteren, de fmt pakket om naar standaarduitvoer te schrijven, de ioutil pakket voor input en output, en de http pakket voor het verzenden van verzoeken.
Een eenvoudig GET-verzoek in Go
Typisch KRIJGEN vraagt om leesgegevens van een server en kan parameters voor de gegevens leveren, afhankelijk van de aard en specificatie van de API.
In deze zelfstudie leert u hoe u RESTful API's kunt gebruiken met behulp van de eenvoudige verzoek- en antwoordservice van httpbin.
Hier is een voorbeeld van het maken van een HTTP-verzoek met Go:
url := "https://httpbin.org/get"
reactie, fout := http. Krijg (url)
als fout != nul {
fmt. Printf("Er is een fout opgetreden bij het API-verzoek %s", err. Fout())
} anders {
// gaat verder [1] ...
}
De url variabele is het eindpunt waarnaar u de aanvraag verzendt. De Krijgen methode neemt de URL op, voert de. uit Krijgen request, en retourneert het antwoord, inclusief de headers en body.
U kunt eventuele fouten uit het verzoek afhandelen, afhankelijk van uw vereisten. Als er geen fouten zijn, kunt u doorgaan met het extraheren van de informatie die u nodig hebt uit de Krijgen verzoek.
} anders {
//... [1] vervolg
responseData, err := ioutil. Alles lezen (antwoord. Lichaam)
als fout != nul {
fmt. Printf("Er is een fout opgetreden bij het ontleden van de aanvraagtekst %s", err. Fout())
} anders {
// gaat verder [2] ...
}
}
Het antwoord is Lichaam veld bevat de hoofdtekst van het antwoord. De... gebruiken Alles lezen methode van de ioutil pakket, kunt u de hoofdtekst van de reactie lezen en mogelijke fouten afhandelen.
} anders {
//... [2] vervolg
fmt. Println(snaar(responsgegevens))
}
De anders statement drukt de hoofdtekst van het antwoord af naar uw console als er geen fouten zijn bij de leesbewerking.
Hier is het resultaat van de KRIJGEN verzoek aan het eindpunt van httpbin.
Een eenvoudig POST-verzoek in Go
Typische POST-verzoeken leveren gegevenspayloads aan de server en de server retourneert een antwoord afhankelijk van de bewerking.
Hier is een eenvoudige structuur voor het coderen van een JSON-payload naar de server als onderdeel van het POST-verzoek.
type JSON structureren {
info snaar
bericht snaar
}
De JSON struct heeft de info en bericht string-velden, en u initialiseert een struct-instantie voor het verzoek.
url := "https://httpbin.org/post"
jsonInstance := JSON {
info: "verwacht succes",
bericht: "het verzoek moet opbrengst ",
}
De url variabele slaat het POST-verzoekeindpunt van de httpbin-website op. De jsonInstance variabele is een instantie van de JSON-struct die u kunt gebruiken om gestructureerde gegevens op te slaan en te verzenden.
U kunt de Maarschalk methode van de json pakket om JSON op te maken voor de aanvraag.
jsonData, err := json. Maarschalk (jsonInstance)
als fout != nul {
fmt. Println("er was een fout met de JSON", err. Fout())
} anders {
// gaat verder [1] ...
}
De Maarschalk methode retourneert ook een fout die u kunt verwerken. Als er geen fouten zijn met de JSON-marshaling-bewerking, kunt u doorgaan met het maken van het POST-verzoek.
U kunt de Na methode om POST-verzoeken te maken. De Na methode neemt het URL-eindpunt, het inhoudstype van de aanvraag en een buffer van de payload in beslag. Het retourneert het antwoord en een fout.
} anders {
//... vervolg [1]
reactie, fout := http. Post (url, "application/json", bytes. Nieuwe buffer (jsonData))
als fout != nul {
fmt. Println("er is een fout opgetreden bij het verzoek", err. Fout())
} anders {
// gaat verder [2] ...
}
}
Nogmaals, u kunt de reactietekst lezen met behulp van de Alles lezen methode van de ioutil pakket:
} anders {
//... vervolg [2]
gegevens, fout := ioutil. Alles lezen (antwoord. Lichaam)
als fout != nul {
fmt. Println("er is een fout opgetreden bij het lezen van de aanvraagtekst", err. Fout())
} anders {
fmt. Println(snaar(gegevens))
}
}
De Println statement voert het resultaat van het HTTP-verzoek uit naar uw console.
als de httpbin documentatie specificeert, retourneert dit POST-eindpunt de aanvraaggegevens die u verzendt.
Web-apps bouwen in Go is eenvoudig
Je kunt in Go webapplicaties bouwen met verschillende functionaliteiten zonder afhankelijkheden.
De http pakket heeft de functies die u nodig heeft voor de meeste van uw bewerkingen. Je kunt dit pakket gebruiken met anderen zoals de json pakket voor JSON-bewerkingen, de context pakket voor signalering en het sjabloonpakket voor sjablonen. Er zijn veel andere pakketten in de standaardbibliotheek.