Go'da GraphQL API Uç Noktaları Nasıl Kullanılır?

Go'da GraphQL API Uç Noktaları Nasıl Kullanılır?

Graph Query Language (GraphQL), web üzerinden iletişim için HTTP tabanlı bir istemci-sunucu mimarisi olan GraphQL API'leri ile etkileşim için bir dil ve özelliktir.





Facebook, REST mimari standardına alternatif olarak GraphQL'i yayınladı. GraphQL, REST ile ilgili sorunların çoğunu durumsuz ve önbelleğe alınabilir bir şekilde ele alır. Beklenen çıktıları veya girdileri açıklayan basit ve sezgisel bir sözdizimi sağlar ve API, istekle eşleşen verileri aktarır.





GÜNÜN YAPILAN VİDEOSU

GraphQL bir belirtim olduğundan, Go dahil olmak üzere herhangi bir sunucu tarafı programlama dilinde GraphQL API'leri oluşturabilir ve kullanabilirsiniz.





Go'da GraphQL API'lerine Başlarken

GraphQL, HTTP mimarisini temel alır , ve Go, yerleşik olarak HTTP işlevselliği sağlar. http paket.

kullanabilirsiniz http paket Go'da RESTful API'leri tüketin , diğer özelliklerin yanı sıra. GraphQL için, aşağıdakilerle GraphQL API sunucularına sorgular ve mutasyonlar yapabilirsiniz. http paket ve diğer yerleşik paketler.



  Go HTTP paketinin genel bakış bölümü

GraphQL istemci paketleri gibi makine kutusu veya shurCooL'ler GraphQL API'leri ile etkileşim sürecini daha da kolaylaştırır.

kullanabilirsiniz http GraphQL API ile etkileşim kurmak için herhangi bir bağımlılık olmadan paket. Başlamak için bu paketleri Go dosyanıza aktarın:





ipod'dan pc'ye müzik aktarma
import ( 
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"time"
)

kullanacaksın bayt istek için yeni bir arabellek oluşturmak için paket ve json JSON istek gövdesine bir harita hazırlamak için paket. Kullanabilirsiniz ioutil yanıt gövdesini okumak ve zaman istek için bir zaman sınırı belirlemek için paket.

engelli bir iphone nasıl sıfırlanır

Go ile GraphQL API'lerini Sorgulama

Sorgulayabileceğiniz ve uygulamalarınıza entegre edebileceğiniz birçok ücretsiz genel GraphQL API vardır. Bu makalede, dünya çapındaki ülkelerle ilgili verileri sorgulamak için Apollo GraphQL'in Ülkeler API'sini sorgulayacaksınız.





Tüm GraphQL işlemleri, bir yüke (istek gövdesi) sahip olmaları gerektiğinden tipik olarak POST istekleridir. Çoğu GraphQL API'si, içerik türü olarak JSON istek gövdesini kabul eder ve Go, JSON ile çalışmak için haritaları ve yapıları kullanmak için işlevsellik sağlar .

API'yi sorgulamak için GraphQL şemasının yapısını incelemeniz gerekecek. Sorgu, işlemin (sorgu veya mutasyon) anahtar olması ve verilerin haritanın değeri olması dışında normal bir GraphQL sorgusu ile aynı olacaktır.

İstek için JSON'a ekleyeceğiniz bir JSON harita örneğini şu şekilde bildirebilirsiniz.

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

bu jsonMapInstance değişken, isteğin gövdesinin harita örneğidir. Değer, API'den beklediğiniz sorgu verilerinin bir dizesidir. Bu durumda, API'lerden bekleyeceğiniz sorgu verileri ülkeler şema isim , telefon , para birimi , kod , ve emoji alanlar.

kullanabilirsiniz mareşal yöntemi json harita örneğini JSON'a kodlamak için paket. bu mareşal yöntemi, kodlanmış JSON'u ve kodlama sorunu olan durumlar için bir hata döndürür.

jsonResult, err := json.Marshal(jsonMapInstance) 

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

Haritayı JSON olarak kodladıktan sonra, POST isteğini API'ye gönderebilirsiniz. ile yeni bir istek örneği oluşturabilirsiniz. Yeni istek istek türünü, URL'yi ve JSON arabelleğini alan yöntem.

harici sabit diskten zaman makinesi yedekleri nasıl silinir

bu Yeni istek yöntem bir istek örneği döndürür. API'nin özelliklerine bağlı olarak içerik türünü ayarlamanız gerekir. HTTP istekleri için içerik türünü şu şekilde ayarlayabilirsiniz: Ayarlamak yöntemi başlık istek örneğinizin yöntemi.

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

İle isteğiniz için basit bir HTTP istemcisi oluşturabilirsiniz. Müşteri HTTP paketinin yöntemi. bu Müşteri yöntemi ile isteğiniz için bir zaman sınırı belirlemenize de olanak tanır. zaman paket.

 
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)
}

HTTP istemcisini bildirdikten sonra, API isteğinizi şu komutla yürütün: Yapmak yöntem. bu Yapmak method, istek örneğini kabul eder ve yanıtı ve bir hatayı döndürür.

API isteğinin yanıtını şuradan okuyabilirsiniz: ioutil paket Hepsini oku yöntem. Bir çıktı akışı alır ve işleyebileceğiniz bir hatayla verilerin bir bayt dilimini döndürür.

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

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

Yerleşik dize işleviyle, bayt dilimi yanıtını dize türüne dönüştürebilirsiniz.

fmt.Println(string(responseData)) 

API isteğinin sonucunu gösteren bir yanıt:

  Bir GraphQL API sorgusunun çıktısı, ülkelerin ve talep edilen alanların bir listesini gösterir.

RESTful API'leri Tüketmek, GraphQL API'lerini Tüketmek Gibidir

Hem REST hem de GraphQL API'leri HTTP protokolünü kullandığından, her birinin tüketilmesi çok benzer bir süreçtir ve http Her iki durum için paket.

İstemciler oluşturmanız, örnekler istemeniz ve aynı paketlerle verileri okumanız gerekir.