GraphQL: HTTP'de REST'e Bir Alternatif

GraphQL: HTTP'de REST'e Bir Alternatif

Uygulamaları oluşturmak ve dağıtmak için birçok açık kaynaklı mimari standart mevcuttur. REST (Representational State Transfer), SOAP (Basit Nesne Erişim Protokolü), RPC (Remote Procedural Call) ve GraphQL API'leri en popüler olanlarıdır.





RESTful API'ler en çok kullanılan API mimari standardıdır. Birçok uç noktaya sahip karmaşık RESTful API'ler yazdıysanız, bunların ne kadar karmaşık olabileceğini muhtemelen fark etmişsinizdir. Bu, özellikle uç noktalar arasında yalnızca küçük farklılıklar varsa geçerlidir.





GÜNÜN YAPILAN VİDEOSU

RESTful API'ler belirli verileri seçecek kadar esnek olmadığı için veri alma ile ilgili sorunlarla da karşılaşabilirsiniz. GraphQL, RESTful API'lerin bu sorunlarını çözer.





GraphQL Nedir?

GraphQL (Graph Query Language), API'ler oluşturmak için bir sorgu dili ve çalışma zamanıdır. Veri tüketmek için birçok uç noktaya sahip REST API'lerinin aksine, GraphQL API'lerinin bir giriş noktası vardır. Sorgularda açıklayarak belirli verileri getirebilirsiniz.

bu GraphQL belirtimi sorgu dilini ve GraphQL sunucularının nasıl çalıştığını tanımlar. Python'dan sunucu tarafı dillerinde GraphQL API'leri oluşturabilir ve kullanabilirsiniz. Javascript ve HTTP'yi destekleyen herhangi bir dil.



eski bir bilgisayarla yapılacak şeyler

Meta, HTTP üzerine inşa etmek için REST'e alternatif olarak 2012'de GraphQL'yi oluşturdu. 2015 yılında GraphQL'i açık kaynak standardı olarak yayınladılar. Bugün, GraphQL temeli, GraphQL belirtiminin gelişimini denetlemektedir.

GraphQL oldukça yenidir, benimsenmesi düşüktür ve onu kullanmanın gizli maliyetleri vardır. GraphQL API'leri oluşturmak, özellikle birkaç uç noktaya sahip küçük projeler için gereksiz yere karmaşık olabilir.





Ayrıca, tüm GraphQL istekleri, isteğin durumundan bağımsız olarak sonunda 200 durum kodunu döndürür.

GraphQL Nasıl Çalışır?

  GraphQL's functions and syntax

Farklı Kaynak odaklı olan REST , GraphQL, verilerle etkileşim kurmak için verileri bir grafik olarak düşünmenizi gerektirir. Verinin yapısını belirtebilirsiniz ve belirtim, API ile HTTP üzerinden etkileşim kurmak için sağlam bir sorgu arabirimi sağlar. bağlı olarak çeşitli özellikleri kullanabileceksiniz. GraphQL paketi veya kitaplığı kullanmayı seçersiniz.





GraphQL şemaları, talep edilebilir nesneyi ve onun kullanılabilir alanlarını tanımlayan nesne tiplerini içerir. API sorguları ve mutasyonlarında, GraphQL paketi sorguları doğrular ve belirtilen işleyici işlevlerine (çözümleyiciler) dayalı olarak sorguları yürütür.

Neden GraphQL Kullanmalısınız?

REST, kullanımı kolay bir standarttır ve çoğu programlama dilinde, RESTful API'leri hızlı bir şekilde oluşturmak için araçlar bulunur. Ancak, RESTful API'leri oluşturma ve tüketmeyle ilgili birçok sorun vardır.

İşte geliştiricilerin bazı kullanım durumları için GraphQL'yi tercih etmesine neden olan REST ile ilgili bazı sorunlar.

Verimsiz Veri Alma

RESTful API'ler, verileri uç noktanın belirtimine göre aktarır. Uç noktanın işleyici işlevinde sabit kodlanmış olanın ötesindeki verileri alacak kadar esnek değiller.

Bir uç noktanın çağrı üzerine bir veri listesi döndürdüğünü ve alanlar için değerler veya ölçütler belirtmeniz gerektiğini varsayalım. Bu durumda geliştiricinin bir uç nokta oluşturması ve verileri döndürmek için iş mantığını tanımlaması gerekir. Değerli kaynağı manuel olarak ayrıştırabilirsiniz, bu da sonunda daha fazla zaman alır.

Kriterlere ve spesifikasyonlara dayalı verileri esnek bir şekilde döndürmek için API'leri sorgulayabildiğinizden, GraphQL verimsiz veri alma sorununu çözer.

iphone bulursan ne yaparsın

GraphQL API'leri etkileşimlidir; almanız gereken verileri kolay, okunabilir bir sözdiziminde belirtebilirsiniz.

{ 
user(where: {age: {_eq: "89"}}) {
name
school(where: {alive: {_eq: true}}) {
bio
nationality
}
}
}

Yukarıdaki GraphQL sorgusu, bir kullanıcı girişler için şema yaş alan 89'dur. Sorgunun, girişler için katıştırılmış bir sorgusu vardır. canlı alan değerlendirir doğru . Şemadan ad, biyografi ve uyruk alanlarını döndürür.

Hızlı Geliştirme

GraphQL API'lerini oluşturmak ve kullanmak, özellikle proje boyutu arttıkça REST kullanmaktan daha kolaydır. Geliştirme aşamasında, RESTful API'leri geliştirirken yapacağınız kadar çok rota ve işleyici işlevi geliştirmeniz gerekmez. GraphQL API'lerini kullanmak, RESTful API'leri kadar sıkıcı değildir.

REST'te, tek bir uç noktanın olduğu GraphQL'den farklı olarak, farklı uç noktalar farklı kaynaklara erişim sağlar. Bu esneklik ve performans sağlar ve sorgular farklı çözümleyici işlevlerini çağırabilir.

GraphQL Şema Tanımlama Dili

GraphQL Şema Tanımlama Dili (SDL), GraphQL hizmetleri için şemaları belirtir.

GraphQL SDL sözdiziminin okunması ve anlaşılması kolaydır. İle bir dosyada şemanızın yapısını belirteceksiniz. .graphql veya .graphqls eklenti.

type Human { 
name: String!
age: Int!
}

input AddHuman {
name: String!
age: Int!
}

type Mutation {
CreateHuman(input: AddHuman!): Human!
DeleteHuman(id: Int!): String!
UpdateHuman(id: Int!): String!
}

type Query {
GetHuman(id: Int!): Human!
GetHumans: [Human!]!
}

Yukarıdaki GraphQL kodu, istekler için API'nin yapısını tanımlayan bir GraphQL API'sinin şemasıdır. Şema, API için CRUD işlevselliğini tanımlar.

İstemci tarafında, şemanın yapısına ve istemcinin verilerine veya işlemine bağlı olarak, istemci bir sorgu (REST modunda GET veya DELETE) veya mutasyon (PUT veya POST).

iphone'unuzda virüs olup olmadığını nasıl anlarsınız

İşte sorgulamaya bir örnek İnsan şema.

query Human { 
name
age
}

Yukarıdaki sorgu, insan şemasının isim ve yaş alan verileri.

GraphQL mutasyonları, sorguların aksine oldukça farklı bir sözdizimine sahiptir. İşte örnek bir mutasyon işlemi İnsan şema.

mutation { 
CreateHuman(input:{ name:"man", age:1000000000000000,}) {
name
age
}
}

Mutasyon kodu girişleri isim ve yaş alanları istemciye gönderir ve alanlardan verileri döndürür.

GraphQL API'nizi oluştururken kalıcılık için bir veri deposuna ihtiyacınız olacak. REST ve çoğu HTTP tabanlı web mimarisi gibi, GraphQL durumsuzdur ve uygulamanız için herhangi bir veri deposunu veya veritabanını kullanabilirsiniz.

GraphQL API'si Oluşturma

  GraphQL Desteklenen Diller

GraphQL bir belirtimdir ve GraphQL'yi en popüler sunucu tarafı dillerinde oluşturabilirsiniz. Projeniz için ihtiyaç duyduğunuz özelliklere sahip bir kütüphane bulmanız gerekecek.

Bir GraphQL kitaplığı seçerken, tüm GraphQL türlerini ve işlemlerini destekleyen zengin özelliklere sahip bir kitaplık kullanmak istersiniz. Çoğu kitaplık ya şema öncelikli ya da kod öncelikli bir yaklaşımı benimser. İlkinde, bir GraphQL şeması tanımlarsınız ve kitaplık, çözümleyiciler ve ortak kod üretir. İkincisi için, bir şema tanımlamadan çözümleyicileri sabit kodlarsınız.

GraphQL Kabul Ediliyor

GraphQL'nin başlangıcından bu yana, geliştiriciler ve şirketler kullanımını basitleştirmek için araçlar yayınladılar. Bunlar, daha küçük ve orta ölçekli projeler için geliştirme süresini azaltabilir.

Daha fazla bilgi edinmek için açık kaynaklı GraphQL istemcilerine, GraphQL belgelerine ve özelliklerine göz atabilirsiniz.