Bu REST alternatifi ve Go ile nasıl kullanılacağı hakkında bilgi edinin.

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.

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 mimarisine dayalıdır ve Go, yerleşik http paketinde HTTP işlevselliği sağlar.

Diğer özelliklerin yanı sıra Go’da RESTful API’lerini kullanmak için http paketini kullanabilirsiniz. GraphQL için, http paketi ve diğer yerleşik paketlerle GraphQL API sunucularına sorgular ve mutasyonlar yapabilirsiniz.

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

Machinebox veya shurCooL gibi GraphQL istemci paketleri, GraphQL API’leri ile etkileşim sürecini daha da kolaylaştırır.

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

import (

    “bytes”

    “encoding/json”

    “fmt”

    “io/ioutil”

    “net/http”

    “time”

)

İstek için yeni bir arabellek oluşturmak üzere bayt paketini ve JSON istek gövdesine bir harita hazırlamak için json paketini kullanacaksınız. Yanıt gövdesini okumak için ioutil’i ve istek için bir zaman sınırı belirlemek için zaman paketini kullanabilirsiniz .

Go ile GraphQL API’lerini Sorgulama

Sorgulayabileceğiniz ve uygulamalarınıza entegre edebileceğiniz birçok ücretsiz genel GraphQL API vardır. Bu makale için, 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

            }

        }

    `,

}

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

jsonMapInstance değişkeni, isteğin gövdesinin harita örneğidir. Değer, API’den beklediğiniz sorgu verilerinin bir dizesidir. Bu durumda, API’nin ülkeler şemasından bekleyeceğiniz sorgu verileri ad, telefon , para birimi , kod ve emoji alanlarıdır.

Harita örneğini JSON’a kodlamak için json paketinin Marshal yöntemini kullanabilirsiniz . Marshal 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. İstek türünü, URL’yi ve JSON arabelleğini alan NewRequest yöntemiyle yeni bir istek örneği oluşturabilirsiniz .

NewRequest yöntemi, 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ü , istek örneğinizin Header yönteminin Set yöntemiyle ayarlayabilirsiniz.

newRequest, err := http.NewRequest(“POST”, “https://countries.trevorblades.com/graphql”, bytes.NewBuffer(jsonResult))

newRequest.Header.Set(“Content-Type”, “application/json”)

HTTP paketinin Client yöntemi ile isteğiniz için basit bir HTTP istemcisi oluşturabilirsiniz. İstemci yöntemi, zaman paketiyle birlikte isteğiniz için bir zaman sınırı belirlemenize de olanak tanır.

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 Do yöntemiyle yürütün. Do yöntemi , istek örneğini kabul eder ve yanıtı ve bir hatayı döndürür.

API isteğinin yanıtını ioutil paketinin ReadAll yöntemiyle okuyabilirsiniz. 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.

Hem REST hem de GraphQL API’leri HTTP protokolünü kullandığından, her birinin tüketilmesi çok benzer bir süreçtir ve her iki durumda da http paketini kullanabilirsiniz.

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

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir