Consumir API RESTful amb Go

Consumir API RESTful amb Go

Les API RESTful són arquitectures populars per a la transferència de dades a través del web. Les API RESTful solen utilitzar HTTP, cosa que les fa adequades per als casos en què l'apatridia és important.





Com qualsevol idioma del servidor, podeu interactuar amb el protocol HTTP i fer sol·licituds HTTP a Go.





Comenceu a consumir API RESTful a Go

El http El paquet proporciona la major part de la funcionalitat que necessitareu per interactuar amb el protocol HTTP a Go. Això inclou fer sol·licituds HTTP i no necessàriament cal dependències externes, com Gin o una base de dades .





MAKEUSEO VÍDEO DEL DIA

Podeu utilitzar el http paquet per consumir API i per obtenir pàgines raspat web a Go .

Importeu aquests paquets per començar a fer sol·licituds HTTP a Go.



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

Fareu servir el bytes paquet per manipular porcions de bytes, el json paquet per formatar dades de sol·licitud, el fmt paquet per escriure a la sortida estàndard, el ioutil paquet d'entrada i sortida, i el http paquet per enviar sol·licituds.

Una sol·licitud GET senzilla a Go

Típic ACONSEGUIR sol·licita dades de lectura d'un servidor i pot proporcionar paràmetres per a les dades en funció de la naturalesa i l'especificació de l'API.





En aquest tutorial, aprendràs a consumir API RESTful mitjançant el servei senzill de sol·licitud i resposta d'httpbin.

Aquí teniu un exemple de fer una sol·licitud HTTP amb Go:





com separar un controlador de Xbox
url := "https://httpbin.org/get" 
response, err := http.Get(url)

if err != nil {
fmt.Printf("There was an error from the API request %s", err.Error())
} else {
// continues [1] ...
}

El url La variable és el punt final al qual esteu enviant la sol·licitud. El Aconseguir mètode agafa l'URL, executa el Aconseguir sol·licitud i retorna la resposta, incloses les capçaleres i el cos.

Podeu gestionar qualsevol error de la sol·licitud en funció dels vostres requisits. Si no hi ha errors, podeu procedir a extreure la informació que necessiteu Aconseguir petició.

} else { 
// ... [1] continued
responseData, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Printf("There was an error from parsing the request body %s", err.Error())
} else {
// continues [2] ...
}
}

La resposta Cos camp conté el cos de la resposta. Utilitzant el Llegeix-ho tot mètode de la ioutil paquet, podeu llegir el cos de la resposta i gestionar possibles errors.

} else { 
// ... [2] continued
fmt.Println(string(responseData))
}

El altra cosa La instrucció imprimeix el cos de la resposta a la vostra consola si no hi ha errors en l'operació de lectura.

Aquí teniu el resultat de la ACONSEGUIR sol·licitud al punt final de httpbin.

  resultat de la sol·licitud GET

Una sol·licitud POST senzilla a Go

Les sol·licituds POST típiques proporcionen càrregues útils de dades al servidor i el servidor retorna una resposta en funció de l'operació.

Aquí hi ha una estructura senzilla per codificar una càrrega útil JSON al servidor com a part de la sol·licitud POST.

despertador que et fa sortir del llit
type JSON struct { 
info string
message string
}

El JSON struct té el informació i missatge camps de cadena i inicialitzareu una instància d'estructura per a la sol·licitud.

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

jsonInstance := JSON {
info: "expecting success",
message: "the request should return ",
}

El url La variable emmagatzema el punt final de sol·licitud POST des del lloc web httpbin. El jsonInstance La variable és una instància de l'estructura JSON que podeu utilitzar per emmagatzemar i enviar dades estructurades.

Podeu utilitzar el Mariscal mètode des del json paquet per formatar JSON per a la sol·licitud.

jsonData, err := json.Marshal(jsonInstance) 
if err != nil {
fmt.Println("there was an error with the JSON", err.Error())
} else {
// continues [1] ...
}

El Mariscal El mètode també retorna un error que podeu gestionar. Si no hi ha errors amb l'operació de classificació JSON, podeu procedir a fer la sol·licitud POST.

Podeu utilitzar el Publicació mètode per fer sol·licituds POST. El Publicació El mètode inclou el punt final de l'URL, el tipus de contingut de la sol·licitud i una memòria intermèdia de la càrrega útil. Retorna la resposta i un error.

} else { 
// ... continued [1]
response, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))

if err != nil {
fmt.Println("there was an error with the request", err.Error())
} else {
// continues [2] ...
}
}

De nou, podeu llegir el cos de la resposta utilitzant el Llegeix-ho tot mètode de la ioutil paquet:

} else { 
// ... continued [2]
data, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Println("there was an error reading the request body", err.Error())
} else {
fmt.Println(string(data))
}
}

El Println La instrucció mostra el resultat de la sol·licitud HTTP a la vostra consola.

Com el documentació httpbin especifica, aquest punt final POST retorna les dades de sol·licitud que l'envieu.

  resultat de la sol·licitud POST

Crear aplicacions web a Go és fàcil

Podeu crear aplicacions web amb diverses funcionalitats a Go sense dependències.

El http El paquet té les funcions que necessitareu per a la majoria de les vostres operacions. Podeu utilitzar aquest paquet amb altres com el json paquet per a operacions JSON, el context paquet per a la senyalització i el paquet de plantilles per a la plantilla. Hi ha molts altres paquets a la biblioteca estàndard.