RESTful API: er är populära arkitekturer för dataöverföring över webben. RESTful API: er använder vanligtvis HTTP, vilket gör dem lämpliga för fall där tillståndslöshet är viktigt.
Som alla språk på serversidan kan du interagera med HTTP-protokollet och göra HTTP-förfrågningar i Go.
Komma igång Konsumera RESTful APIs i Go
De http paketet innehåller de flesta funktioner du behöver för att interagera med HTTP-protokollet i Go. Detta inkluderar att göra HTTP-förfrågningar, och du behöver inte nödvändigtvis externa beroenden, som Gin eller en databas.
Du kan använda http paket att konsumera API: er och hämta sidor för webbskrapning i Go.
Importera dessa paket för att börja göra HTTP-förfrågningar i Go.
importera (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
Du kommer att använda bytes paket för att manipulera byteskivor, den json paket för att formatera förfrågningsdata, den fmt paket för att skriva till standardutdata, den ioutil paket för input och output, och http paket för att skicka förfrågningar.
En enkel GET-förfrågan på gång
Typisk SKAFFA SIG begär läsdata från en server och kan tillhandahålla parametrar för data beroende på API: ts natur och specifikation.
I den här handledningen kommer du att lära dig hur du använder RESTful API: er med hjälp av httpbins enkla begäran och svarstjänst.
Här är ett exempel på hur du gör en HTTP-förfrågan med Go:
url := "https://httpbin.org/get"
svar, fel := http. Hämta (url)
om fel!= noll {
fmt. Printf("Det uppstod ett fel från API-begäran %s", err. Fel())
} annan {
// fortsätter [1] ...
}
De url variabel är slutpunkten du skickar begäran till. De Skaffa sig metoden tar in URL: en, kör Skaffa sig begäran och returnerar svaret, inklusive dess rubriker och brödtext.
Du kan hantera eventuella fel från begäran beroende på dina krav. Om det inte finns några fel kan du fortsätta att extrahera den information du behöver från Skaffa sig begäran.
} annan {
//... [1] fortsatte
responseData, err := ioutil. Läs allt (svar. Kropp)
om fel!= noll {
fmt. Printf("Det uppstod ett fel vid analysen av förfrågningstexten %s", err. Fel())
} annan {
// fortsätter [2] ...
}
}
Svaret är Kropp fältet innehåller svaret. Använda Läs allt metod för ioutil paketet kan du läsa svarstexten och hantera eventuella fel.
} annan {
//... [2] fortsatte
fmt. Println(sträng(responseData))
}
De annan uttalande skriver ut svarstexten till din konsol om det inte finns några fel från läsoperationen.
Här är resultatet av SKAFFA SIG begäran till httpbins slutpunkt.
En enkel POST-förfrågan på gång
Typiska POST-förfrågningar ger datanyttolaster till servern, och servern returnerar ett svar beroende på operationen.
Här är en enkel struktur för att koda en JSON-nyttolast till servern som en del av POST-begäran.
typ JSON struktur {
info sträng
meddelande sträng
}
De JSON struct har info och meddelande strängfält och du initierar en struct-instans för begäran.
url := "https://httpbin.org/post"
jsonInstance := JSON {
info: "förväntar framgång",
meddelande: "förfrågan ska lämna tillbaka ",
}
De url variabel lagrar POST-begärans slutpunkt från httpbin-webbplatsen. De jsonInstance variabel är en instans av JSON-strukturen som du kan använda för att lagra och skicka strukturerad data.
Du kan använda Marskalk metod från json paket för att formatera JSON för begäran.
jsonData, err := json. Marshal (jsonInstance)
om fel!= noll {
fmt. Println("det var ett fel med JSON", err. Fel())
} annan {
// fortsätter [1] ...
}
De Marskalk metod returnerar också ett fel som du kan hantera. Om det inte finns några fel med JSON-rangeringsoperationen kan du fortsätta att göra POST-begäran.
Du kan använda Posta metod för att göra POST-förfrågningar. De Posta metoden tar in URL-slutpunkten, begärans innehållstyp och en buffert för nyttolasten. Det returnerar svaret och ett fel.
} annan {
//... fortsatte [1]
svar, fel := http. Post (url, "application/json", bytes. NewBuffer (jsonData))
om fel!= noll {
fmt. Println("det uppstod ett fel med begäran", err. Fel())
} annan {
// fortsätter [2] ...
}
}
Återigen kan du läsa svarstexten med hjälp av Läs allt metod för ioutil paket:
} annan {
//... fortsatte [2]
data, fel := ioutil. Läs allt (svar. Kropp)
om fel!= noll {
fmt. Println("det uppstod ett fel vid läsning av förfrågans text", err. Fel())
} annan {
fmt. Println(sträng(data))
}
}
De Println satsen matar ut resultatet av HTTP-förfrågan till din konsol.
Som den httpbin dokumentation anger, returnerar denna POST-slutpunkt de begärandata som du skickar den.
Att bygga webbappar i Go är enkelt
Du kan bygga webbapplikationer med olika funktioner i Go utan beroenden.
De http paketet har de funktioner du behöver för de flesta av dina operationer. Du kan använda detta paket med andra som json paket för JSON-operationer, den sammanhang paket för signalering, och mallpaket för mall. Det finns många andra paket i standardbiblioteket.