Jak využívat koncové body GraphQL API v Go

Jak využívat koncové body GraphQL API v Go

Graph Query Language (GraphQL) je jazyk a specifikace pro interakci s GraphQL API, architekturou klient-server založenou na HTTP pro komunikaci přes web.





Facebook vydal GraphQL jako alternativu k architektonickému standardu REST. GraphQL řeší většinu problémů s REST bezstavovým způsobem, který lze uložit do mezipaměti. Poskytuje jednoduchou a intuitivní syntaxi, která popisuje očekávaný výstup(y) nebo vstup(y), a API předává data odpovídající požadavku.





VYUŽÍVÁNÍ VIDEA DNE

Vzhledem k tomu, že GraphQL je specifikace, můžete vytvářet a používat rozhraní API GraphQL v jakémkoli programovacím jazyce na straně serveru, včetně Go.





Začínáme s GraphQL API v Go

GraphQL je založen na architektuře HTTP a Go poskytuje ve své vestavěné funkci HTTP http balík.

Můžete použít http zabalit do využívat RESTful API v Go , mimo jiné funkce. Pro GraphQL můžete provádět dotazy a mutace na servery GraphQL API pomocí http balíček a další vestavěné balíčky.



jak přenášet úspory páry na jiný počítač
  přehledová část balíčku Go HTTP

Klientské balíčky GraphQL jako Machinebox's nebo shurCooL's ještě více zjednodušit proces interakce s GraphQL API.

Můžete použít http balíček bez jakýchkoli závislostí pro interakci s GraphQL API. Začněte importem těchto balíčků do souboru Go:





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

Budete používat bajtů balíček k vytvoření nové vyrovnávací paměti pro požadavek a soubor json balíček k seřazení mapy do těla požadavku JSON. Můžeš použít ioutil přečíst tělo odpovědi a čas balíček pro nastavení časového limitu pro žádost.

Dotazování rozhraní GraphQL API s Go

Existuje mnoho bezplatných veřejných rozhraní API GraphQL, která můžete dotazovat a integrovat do svých aplikací. V tomto článku se dotážete na rozhraní API pro země Apollo GraphQL pro dotazování na data o zemích po celém světě.





jak zakázat klávesy na klávesnici Windows 10

Všechny operace GraphQL jsou typicky požadavky POST, protože musí mít užitečné zatížení (tělo požadavku). Většina rozhraní GraphQL API přijímá tělo požadavku JSON jako typ obsahu a Go poskytuje funkce pro použití map a struktur pro práci s JSON .

Budete si muset prostudovat strukturu schématu GraphQL, abyste se mohli dotazovat na API. Dotaz bude stejný jako běžný dotaz GraphQL kromě toho, že operace (dotaz nebo mutace) je klíčem a data jsou hodnotou mapy.

Zde je návod, jak můžete deklarovat instanci mapy JSON, kterou pro požadavek zařadíte do JSON.

jsonMapInstance := map[string]string { 
"query": `
{
countries {
name,
phone,
currency,
code,
emoji
}
}
`,
}

The jsonMapInstance proměnná je instance mapy pro tělo požadavku. Hodnota je řetězec dat dotazu, který očekáváte od rozhraní API. V tomto případě data dotazu, která očekáváte od rozhraní API zemí schéma jsou název , telefon , měna , kód , a emotikony pole.

Můžete použít Maršál metoda json balíček pro zakódování instance mapy do JSON. The Maršál metoda vrací zakódovaný JSON a chybu pro případy s problémem s kódováním.

jsonResult, err := json.Marshal(jsonMapInstance) 

if err != nil {
fmt.Printf("There was an error marshaling the JSON instance %v", err)
}

Jakmile mapu zakódujete do JSON, můžete odeslat požadavek POST do rozhraní API. Můžete vytvořit novou instanci požadavku pomocí Nová žádost metoda, která přebírá typ požadavku, adresu URL a vyrovnávací paměť JSON.

kde si mohu stáhnout filmy zdarma

The Nová žádost metoda vrací instanci požadavku. Budete muset nastavit typ obsahu v závislosti na specifikacích API. Typ obsahu pro požadavky HTTP můžete nastavit pomocí Soubor metoda Záhlaví metoda instance vašeho požadavku.

newRequest, err := http.NewRequest("POST", "https://countries.trevorblades.com/graphql", bytes.NewBuffer(jsonResult)) 
newRequest.Header.Set("Content-Type", "application/json")

Pro svůj požadavek můžete vytvořit jednoduchého HTTP klienta pomocí Klient metoda balíčku HTTP. The Klient metoda také umožňuje nastavit časový limit pro váš požadavek pomocí čas balík.

 
client := &http.Client{Timeout: time.Second * 5}
response, err := client.Do(newRequest)

if err != nil {
fmt.Printf("There was an error executing the request%v", err)
}

Poté, co deklarujete klienta HTTP, spusťte požadavek API pomocí Dělat metoda. The Dělat metoda přijme instanci požadavku a vrátí odpověď a chybu.

Odpověď na požadavek API si můžete přečíst pomocí ioutil balíček Přečíst vše metoda. Vezme výstupní proud a vrátí bajtovou část dat s chybou, kterou zvládnete.

responseData, err := ioutil.ReadAll(response.Body) 

if err != nil {
fmt.Printf("Data Read Error%v", err)
}

Pomocí vestavěné funkce řetězce můžete převést odpověď bajtového řezu na typ řetězce.

fmt.Println(string(responseData)) 

Zde je odpověď ukazující výsledek požadavku API:

  Výstup dotazu GraphQL API zobrazuje seznam zemí a jejich požadovaná pole.

Spotřeba RESTful API je jako spotřeba GraphQL API

Vzhledem k tomu, že rozhraní REST i GraphQL API používají protokol HTTP, spotřeba každého z nich je velmi podobný proces a můžete použít http balíček pro oba případy.

Budete muset vytvořit klienty, požadovat instance a číst data se stejnými balíčky.