Falcor ve GraphQL arasındaki fark nedir?


163

GraphQL, her biri aşağıda özetlenen bir tür sistemi, sorgu dili ve yürütme semantiği, statik doğrulama ve tür içgözleminden oluşur. Bu bileşenlerin her birinde size yol göstermek için, çeşitli GraphQL parçalarını göstermek üzere tasarlanmış bir örnek yazdık.

- https://github.com/facebook/graphql

Falcor, tüm uzak veri kaynaklarınızı sanal bir JSON grafiği aracılığıyla tek bir etki alanı modeli olarak temsil etmenizi sağlar. İstemcideki bellekte veya sunucudaki ağ üzerinden veri nerede olursa olsun aynı şekilde kodlarsınız.

- http://netflix.github.io/falcor/

Falcor ve GraphQL arasındaki fark nedir (Röle bağlamında)?


5
Jafar'ın Relay / GraphQL ve Falcor / JSON Graph arasındaki farktan bahsettiği bu podcast'e göz atın youtu.be/WL54eYbTJUw?t=53m55s
gdi2290 23:15

Yanıtlar:


131

Ben gördüler Eğik Hava Bölüm 26: FalcorJS ve Açısal 2 nerede Jafar Husain nasıl cevaplar GraphQL kıyaslanamaz FalcorJS . Bu özettir (yorumlama):

  • FalcorJS ve GraphQL aynı sorunu ele alıyor (veri sorgulama, veri yönetimi).
  • Önemli ayrım, GraphQL'in bir sorgu dili olması ve FalcorJS'nin olmamasıdır.
  • FalcorJS'den kaynak istediğinizde, çok açık bir şekilde sonlu değerler dizisi istersiniz. FalcorJS, örneğin aralıklar gibi şeyleri destekliyor genres[0..10]. Ancak, açık uçlu sorguları desteklemez, örn genres[0..*].
  • GraphQL ayarlanır: bana doğru, sipariş, vb bu yerde tüm kayıtları vermek. Bu anlamda, GraphQL sorgu dili FalcorJS daha güçlüdür.
  • GraphQL ile güçlü bir sorgu diline sahipsiniz, ancak bu sorgu dilini sunucuda yorumlamanız gerekir.

Jafar, çoğu uygulamada, istemciden sunucuya giden sorgu türlerinin aynı şekli paylaştığını iddia eder. Bu nedenle, get ve set gibi belirli ve öngörülebilir işlemlere sahip olmak, önbellekten yararlanmak için daha fazla fırsat sunar. Ayrıca, birçok geliştirici, REST mimarisinde basit bir yönlendirici kullanarak istekleri eşleştirmeye aşinadır.

Son tartışma, GraphQL ile gelen gücün karmaşıklıktan daha ağır basmayacağına karar veriyor.


82

Şimdi her iki kütüphaneyle de uygulamalar yazdım ve Gajus'un gönderisindeki her şeye katılıyorum, ancak çerçeveleri kendi kullanımımda en önemli bazı şeyleri buldum.

  • Muhtemelen en büyük pratik fark, GraphQL üzerinde bu noktaya kadar yapılan örneklerin ve muhtemelen çalışmaların çoğunun, ReaQLJS widget'larını veri gereksinimlerine entegre etme sistemi olan GraphQL'i Relay ile entegre etmeye odaklanmış olmasıdır. Diğer yandan FalcorJS, widget sisteminden ayrı olarak hareket etme eğilimindedir, bu da hem React olmayan / Röle istemcisine entegre edilmenin daha kolay olabileceği hem de widget veri bağımlılıklarını widget'larla eşleştirme açısından sizin için otomatik olarak daha az yapacağını gösterir.
  • FalcorJS'nin istemci tarafı entegrasyonlarında esnek olması, sunucunun nasıl hareket etmesi gerektiği konusunda çok fikir sahibi olabilmesidir. FalcorJS aslında "HTTP üzerinden Bu Sorguyu Çağır" özelliğine sahiptir - Jafar Husain bu konuda çok fazla konuşmuyor gibi görünse de - ve bunları ekledikten sonra, istemci kitaplıklarının sunucu bilgilerine tepki verme şekli oldukça benzerdir. GraphQL / Relay bir yapılandırma katmanı ekler. FalcorJS'de, film için bir değer döndürüyorsanız, dönüş değeriniz daha iyi 'film' derken, GraphQL'de, sorgu 'film' döndürse bile, bunu istemci tarafı veri deposuna 'film' olarak koymanız gerektiğini açıklayabilirsiniz. '. - Bu, Gajus'un bahsettiği gücün karmaşıklık dengesinin bir parçasıdır.
  • Pratik olarak, GraphQL ve Relay daha gelişmiş gibi görünüyor. Jafar Husain, Netflix ön ucunun bir sonraki versiyonunun en azından kısmen FalcorJS'de yayınlanacağını belirtti, Facebook ekibi ise 3 yıldan uzun bir süredir üretimde GraphQL / Röle yığınının bazı versiyonunu kullandıklarını belirtti.
  • GraphQL ve Relay çevresindeki açık kaynak geliştirici topluluğu başarılı görünüyor. GraphQL ve Relay etrafında çok sayıda iyi katılımlı destekleyici proje var, oysa ben şahsen FalcorJS civarında çok az şey buldum. Ayrıca kumanda cihazının (baz github depo https://github.com/facebook/relay/pulse ) FalcorJS için github depo (göre önemli ölçüde daha aktif olduğu https://github.com/netflix/falcor/pulse ). Facebook deposunu ilk çektiğimde örnekler kırıldı. Bir github sorunu açtım ve saat içinde düzeltildi. Öte yandan, FalcorJS'de açtığım github sorununun iki hafta içinde resmi bir yanıtı olmadı.

1
GraphQL (2012), React and Relay'dan çok daha önceydi, bu nedenle ilk noktanız tamamen doğru olmayabilir.
Burgi

Haklı olabilirsin. Ben facebooker değilim, bu yüzden tarihle gerçekten konuşamam. Benim yorumum daha çok facebook belgelerinin ve görüşmelerinin mevcut durumundan geliyor. Dünyaya yoldaşları olarak tanıtıldı ( facebook.github.io/react/blog/2015/02/20/… ) ve her ikisi de oldukça geri gider. Relay'ın 2015 başlarında yapılan yorumlarda 3 yıl geriye gitmesi konusunda bazı belirsiz el dalgaları gördüm, bu nedenle her ikisinin de dış dünyaya sunulmadan önce birkaç yıl boyunca dahili olarak geliştirilmesi mümkündür. Ama kesinlikle özel bir bilgim yok.
OverclockedTim

25

GraphQL'in arkasındaki mühendislerden biri olan Lee Byron hashnode üzerinde AMA yaptı , işte bu soru sorulduğunda cevabı:

  • Falcor Gözlemlenebilir, GraphQL değerlerini döndürür. Netflix'in Falcor'u nasıl kullanmak istediği için, bu onlar için çok mantıklı. Birden çok istekte bulunurlar ve verileri hazır olarak sunarlar, ancak aynı zamanda istemci geliştiricinin doğrudan Gözlemlenebilirlerle çalışması gerektiği anlamına gelir. GraphQL bir istek / yanıt modelidir ve o zaman kullanımı son derece kolay olan JSON'a geri döner. Röle, Falcor'un yalnızca düz değerleri kullanarak koruduğu bazı dinamikliği geri ekler.
  • Tip sistemi. GraphQL bir tip sistemi olarak tanımlanmıştır ve bu bize GraphiQL, kod üreteçleri, hata tespiti, vb. Gibi birçok ilginç araç geliştirmemize izin verdi. bu tür bir şey.
  • Ağ kullanımı. GraphQL başlangıçta Facebook'un haber akışını daha düşük uç ağlarda bile düşük uçlu cihazlarda çalıştırmak için tasarlanmıştır, bu nedenle gecikmeyi en aza indirmek için ihtiyacınız olan her şeyi tek bir ağ isteğinde bildirmenize izin vermek için büyük çaba harcar. Öte yandan Falcor, ek veri toplamak için genellikle birden fazla gidiş dönüş gerçekleştirir. Bu gerçekten sadece sistemin sadeliği ile ağın kontrolü arasında bir değiş tokuş. Netflix için ayrıca çok düşük uçlu cihazlarla (örneğin Roku çubuğu) ilgileniyorlar, ancak ağın video akışı için yeterince iyi olacağı varsayımı.

Düzenleme: Falcor gerçekten toplu istekler , ağ kullanımı hakkında yorum yanlış yapabilir. @PrzeoR sayesinde


4
DOĞRU DEĞİL -> "" "Falcor, diğer yandan, ek veri toplamak için genellikle birden fazla gidiş-dönüş gezisi gerçekleştirir. Sadece Falcor Batch işlevselliğini kontrol edin ve Relay'daki ile aynı veya daha iyi.
PrzeoR

1
@PrzeoR Düzeltme için teşekkürler! Gönderiyi düzenledim!
YasserKaddour

Hoş geldiniz :-) burada daha fazla ayrıntı için FalcorJS kontrolü ile ilgili: reaktjs.co/2016/02/03/…
PrzeoR

Büyük makale gerçekten Falcor malesef bir Scala Geliştirici değilim ve Scala ve bu konuda başka bir dilde hiçbir Falcor uygulaması yoktur, büyük, ancak orada Sangria Scala mükemmel bir GraphQL uygulaması
YasserKaddour


21

GÜNCELLEME: Yazımın altında sizinle ana içeriğin tamamlayıcısı olarak paylaşmak istediğim çok yararlı bir yorum buldum: resim açıklamasını buraya girin

Örnek eksikliği ile ilgili olarak, harika falcorjs repo kullanıcısını bulabilirsiniz, bir Falcor'un CRUD kullanımının farklı örnekleri vardır: https://github.com/przeor/awesome-falcorjs ... İkinci şey, " Falcor da dahil olmak üzere Tam Yığın Tepkisi Geliştirmede Mastering (nasıl kullanılacağını öğrenmenin iyi bir yolu):

resim açıklamasını buraya girin

AŞAĞIDAKİ ORGİNAL POST:

FalcorJS ( https://www.facebook.com/groups/falcorjs/ ) Relay / GraphQL ile karşılaştırıldığında verimli olmak için çok daha basittir.

GraphQL + Röle için öğrenme eğrisi BÜYÜK: resim açıklamasını buraya girin

Kısa özetimle: Falcor'a git. Sizi ekibiniz için büyük bir bütçeye ve çok fazla öğrenme zamanına sahip olana kadar sonraki projenizde Falcor'u kullanın, ardından RELAY + GRAPHQL kullanın.

GraphQL + Relay, verimli olmanız gereken büyük bir API'ye sahiptir. Falcor'un küçük API'si vardır ve JSON'a aşina olan herhangi bir ön uç geliştiriciyi kavramak çok kolaydır.

Sınırlı kaynaklara sahip bir AGILE projeniz varsa -> o zaman FalcorJS'ye gidin!

KONUMUM: FalcorJS, tam yığın javascriptte verimli olmak için% 500 + daha kolaydır.

Projemde bazı FalcorJS başlangıç ​​kitleri de yayınladım (+ daha fazla tam yığın falcor'un örnek projeleri): https://www.github.com/przeor

Teknik ayrıntılarda daha fazla olmak için:

1) Falcor kullanırken, hem ön uçta hem de arka uçta kullanabilirsiniz:

'falcor' dan şahin ithal etmek;

ve ardından modelinizi temel alarak oluşturun.

... arka uçta kullanımı kolay iki kütüphaneye de ihtiyacınız var: a) falcor-express - bir kez kullanıyorsunuz (örn. app.use ('/ model.json', FalcorServer.dataSourceRoute (() => yeni NamesRouter ())) ). Kaynak: https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/index.js

b) falcor-router - burada BASİT rotaları tanımlarsınız (örn. rota: '_view.length' ). Kaynak: https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/router.js

Falcor, öğrenme eğrisi açısından çocuk oyuncağıdır.

Ayrıca FB'nin lib'sinden çok daha basit olan belgeleri görebilir ve " falcorjs (netflix falcor) ' u neden önemsemelisiniz? " Makalesine de bakabilirsiniz .

2) Relay / GraphQL, büyük bir kurumsal araç gibi görünmektedir.

Örneğin, ayrı ayrı bahsettiğiniz iki farklı belgeniz var:

a) Röle: https://facebook.github.io/relay/docs/tutorial.html - Konteynerler - Rotalar - Kök Konteyner - Hazır Durumu - Mutasyonlar - Ağ Katmanı - Babel Röle Eklentisi - GRAPHQL

  • GraphQL Röle Özellikleri
  • Nesne Tanımlama
  • Bağ
  • Mutasyonlar
  • Daha fazla okuma
  • API REFERANSI

  • Röle

  • RelayContainer
  • Relay.Route
  • Relay.RootContainer
  • Relay.QL
  • Relay.Mutation
  • Relay.PropTypes
  • Relay.Store
  • ARABİRİMLERİ

  • RelayNetworkLayer

  • RelayMutationRequest
  • RelayQueryRequest

b) GrapQL: https://facebook.github.io/graphql/

  • 2Language
  • 2.1 Kaynak Metin
  • 2.1.1Unicode
  • 2.1.2 Beyaz Alan
  • 2.1.3 Hat Sonlandırıcılar
  • 2.1.4Comments
  • 2.1.5 Önemli Virgüller
  • 2.1.6Lexik Jetonlar
  • 2.1.7 İmzalı Jetonlar
  • 2.1.8Punctuators
  • 2.1.9Names
  • 2.2 Sorgu Belgesi
  • 2.2.1Operations
  • 2.2.2 Seçim Setleri
  • 2.2.3Fields
  • 2.2.4Arguments
  • 2.2.5 Alan Takma Adı
  • 2.2.6Fragments
  • 2.2.6.1Tip Koşulları
  • 2.2.6.2 Satır İçi Parçalar
  • 2.2.7 Giriş Değerleri
  • 2.2.7.1Int Değeri
  • Yüzen Değer
  • Boole Değeri
  • Gergi Değeri
  • Numara Değeri
  • Liste Değeri
  • 2.2.7.7 Giriş Nesnesi Değerleri
  • 2.2.8Variables
  • 2.2.8.1 Parçalar içinde değişken kullanım
  • 2.2.9 Giriş Türleri
  • 2.2.10Directives
  • 2.2.10.1 Parça Direktifleri
  • 3Tip Sistemi
  • 3.1Types
  • 3.1.1Scalars
  • 3.1.1.1 Dahili Skalerler
  • 3.1.1.1.1Int
  • 3.1.1.1.2Float
  • 3.1.1.1.3String
  • 3.1.1.1.4Boolean
  • 3.1.1.1.5ID
  • 3.1.2Objects
  • 3.1.2.1 Nesne Alanı Bağımsız Değişkenleri
  • 3.1.2.2 Nesne Alanı kullanımdan kaldırıldı
  • 3.1.2.3 Nesne türü doğrulaması
  • 3.1.3Interfaces
  • 3.1.3.1 Arayüz tipi doğrulaması
  • 3.1.4Unions
  • 3.1.4.1 Birlik tipi doğrulaması
  • 3.1.5Enums
  • 3.1.6 Giriş Nesneleri
  • 3.1.7Lists
  • 3.1.8Non-null
  • 3.2Directives
  • 3.2.1@skip
  • 3.2.2@include
  • 3.3 Çalıştırma türleri
  • 4Introspection
  • 4.1 Genel İlkeler
  • 4.1.1 Adlandırma kuralları
  • 4.1.2Documentation
  • 4.1.3Deprecation
  • 4.1.4Tip Adı Tanıtımı
  • 4.2 Şema İçgözlemi
  • 4.2.1 "__Type" Türü
  • 4.2.2Tür Çeşitleri
  • 4.2.2.1Scalar
  • 4.2.2.2Object
  • 4.2.2.3Union
  • 4.2.2.4Interface
  • 4.2.2.5Enum
  • 4.2.2.6 Giriş Nesnesi
  • 4.2.2.7List
  • 4.2.2.8Non boş
  • 4.2.2.9 Liste Listesi ve Boş Değil
  • 4.2.3 __Field Türü
  • 4.2.4 __InputValue Türü
  • 5Validation
  • 5.1Operations
  • 5.1.1 Adlandırılmış İşlem Tanımları
  • 5.1.1.1 Operasyon Adı Tekliği
  • 5.1.2 Anonim İşlem Tanımları
  • 5.1.2.1 Yalnız Anonim İşlem
  • 5.2Fields
  • 5.2.1 Nesneler, Arayüzler ve Birlik Türlerinde Alan Seçimleri
  • 5.2.2Seçim Seçiminin Birleştirilmesi
  • 5.2.3 Yaprak Alan Seçimleri
  • 5.3Arguments
  • 5.3.1 Bağımsız Değişken İsimleri
  • 5.3.2 Bağımsız Değişken
  • 5.3.3 Bağımsız Değişken Değerleri Tip Doğruluk
  • 5.3.3.1 Uyumlu Değerler
  • 5.3.3.2 Gerekli Argümanlar
  • 5.4Fragments
  • 5.4.1 Parça Bildirimleri
  • 5.4.1.1 Parça Adı Tekliği
  • 5.4.1.2 Parçalı Forma Türü Varlığı
  • 5.4.1.3 Kompozit Tiplerdeki Parçalar
  • 5.4.1.4 Parçalar Kullanılmalıdır
  • 5.4.2 Parçalı Spreadler
  • 5.4.2.1 Parça yayılım hedefi tanımlandı
  • 5.4.2.2 Parçalı spreadler döngü oluşturmamalıdır
  • 5.4.2.3 Parçanın yayılması mümkündür
  • 5.4.2.3.1 Nesne Kapsamında Nesne Farkları
  • 5.4.2.3.2 Nesne Kapsamında Soyut Tablolar
  • 5.4.2.3.3 Soyut Kapsamda Nesne Farkları
  • 5.4.2.3.4 Soyut Kapsamda Soyut Tablolar
  • 5.5Values
  • 5.5.1 Giriş Nesnesi Alanı Tekliği
  • 5.6Directives
  • 5.6.1 Yönergeler Tanımlandı
  • 5.7Variables
  • 5.7.1 Değişken Teklik
  • 5.7.2Değişken Varsayılan Değerler Doğru Yazılmış
  • 5.7.3 Değişkenler Giriş Türleridir
  • 5.7.4Tüm Değişken Kullanımları Tanımlı
  • 5.7.5 Kullanılan Tüm Değişkenler
  • 5.7.6Tüm Değişken Kullanımlara İzin Verilir
  • 6Execution
  • 6.1 Değerlendirme talepleri
  • 6.2 Zorlama Değişkenleri
  • 6.3 Değerlendirme işlemleri
  • 6.4 Seçim setlerini değerlendirme
  • 6.5 Gruplanmış alan kümesini değerlendirme
  • 6.5.1 Alan girişleri
  • 6.5.2 Normal değerlendirme
  • 6.5.3 Seri yürütme
  • 6.5.4 Hata işleme
  • 6.5.5Nullability
  • 7Response
  • 7.1 Serileştirme Biçimi
  • 7.1.1JSON Serileştirme
  • 7.2 Yanıt Biçimi
  • 7.2.1Data
  • 7.2.2Errors
  • Ek: Gösterim Kuralları
  • A.1 Bağlamdan Bağımsız Dilbilgisi
  • A.2Sekssel ve Sözdizimsel Dilbilgisi
  • A.3 Gramer Gösterimi
  • A.4 Gramer Semantiği
  • A.5Algorithms
  • Ek: Gramer Özeti
  • B.1 Tanımlı Jetonlar
  • B.2 Ders Jetonları
  • B.3 Sorgu Belgesi

Seçim senin:

Basit tatlı ve kısa belgelenmiş Falcor JS VERSUS GraphQL ve Relay gibi uzun ve gelişmiş belgelere sahip büyük kurumsal sınıf aracı

Daha önce de söylediğim gibi, JSON kullanma fikrini kavrayan bir ön uç geliştiriciyseniz, Falcor'un ekibinden JSON grafik uygulaması tam yığın geliştirme projenizi yapmanın en iyi yoludur.


13
Öznel cevap. Teknik karşılaştırmayı içermez. Yorum olarak daha uygun.
Mart'ta Gajus

2
@GajusKuizinas öznel cevap mı? Her iki ;-) belgelerine bakın Sadece Falcor'un öğrenmek için daha hızlı ve daha hızlı olduğunu söylüyorum - ve bu bir gerçek ;-) Ayrıca her ikisiyle de çalışıyorum - FB'nin harika bir performans göstermesine rağmen sadelik uzun vadede kazanacak hype ile iş ;-)
PrzeoR

2
Bu sadece bir fikir ve soruyu hiç cevaplamıyor.
Michał Miszczyszyn

14
Bence bu harika bir cevap, bir teknolojinin öğrenme eğrisi mutlaka öznel değildir ve kolayca ölçülebilir, gerçekler burada net sonuçlar çıkarılabilecek şekilde sunulmaktadır. Gerçek dünyada ciddi profesyoneller bu gerçekleri dikkate alırlar. Sonuçta bu, böyle cevaplardan açıkça yararlanan açık bir sorudur.
bmaggi

2
@MorgenCheng ile hemfikirim. Son birkaç haftadır GraphQL / Relay, Cashay, Redux ve şimdi Falcor'u değerlendirerek turlar yapıyorum ve% 100'ü PrzeoR ile hemfikirim. Relay ve GraphQL müthiş teknolojilerdir, ancak çok daha fazla beyin gücü gerektirirler ve yeni başlayanlar için bakılması daha zordur. Önemli miktarda öğrenme vardır. Falcor'un dezavantajı, tam bir CRUD tabanlı uygulama için örnek eksikliğidir. PostgreSQL ve RethinkDB projelerinin JsonGraph'a tükürdüğünü görmek isterim.
Dom

5

Kısacası, Falcor veya GraphQL veya Restful aynı sorunu çözer - verileri etkili bir şekilde sorgulamak / değiştirmek için bir araç sağlayın.

Farklılıkları, verilerini nasıl sunduklarıdır:

  • Falcor, verilerini çok büyük bir sanal JSON ağacı olarak düşünmenizi istiyor ve get , set ve call kullanıyor , veri yazmak için .
  • GraphQL, verilerini önceden tanımlanmış yazılı nesneler grubu olarak düşünmenizi ister ve sorguları ve mutasyonları kullanır okumak, yazmak .
  • Restful, verilerini bir grup kaynak olarak düşünmenizi ister ve veri okumak, yazmak için HTTP fiillerini kullanır.

Kullanıcı için veri sağlamamız gerektiğinde, beğendiğimiz bir şeyle karşılaşırız: client -> query -> {bir katman sorguyu veri ops'ye çevirir} -> veriler.

GraphQL, Falcor ve JSON API (ve hatta ODdata) ile uğraştıktan sonra kendi veri sorgu katmanımı yazdım . GraphQL ile daha basit, öğrenmesi daha kolay ve daha eşdeğerdir.

Şuraya göz atın:
https://github.com/giapnguyen74/nextql

Ayrıca gerçek zamanlı sorgulama / mutasyon için featherjs ile bütünleşir. https://github.com/giapnguyen74/nextql-feathers


2

Tamam, sadece bir basit ama önemli farktan başlatmak GraphQL bir sorgu sırasında tabanlı Falcor değil!

Ama sana nasıl yardım ediyorlar?

Temel olarak, ikisi de verileri yönetmemize ve sorgulamamıza yardımcı oluyor, ancak GraphQL'in bir req / res Modeli var ve verileri JSON olarak döndürüyor , temelde GraphQL'deki fikir, tüm verilerinizi tek bir hedefe almak için tek bir istekte bulunuyor ... Ayrıca, Kesin bir istekte bulunarak tam yanıt alın, Yani 3G ağları gibi düşük hızlı internet ve mobil cihazlarda çalışacak bir şey ... Yani birçok mobil kullanıcınız varsa veya bazı nedenlerden dolayı daha az istek ve daha hızlı yanıt almak istersiniz , GraphQL kullanın ... Faclor bundan çok uzak olmasa da, okumaya devam edin ...

Öte yandan, Netflix'ten Falcor , genellikle tüm verilerinizi almak için ekstra bir istek (genellikle bir kereden fazla) içerir, ancak tek bir req için iyileştirmeye çalışsalar da ... Falcor , sorgular için daha sınırlıdır ve önceden ve vb gibi tanımlanmış sorgu yardımcıları ...

Ancak daha fazla açıklama için, her birinin kendini nasıl tanıttığını görelim:

GraphQL, API'nız için bir sorgu dili

GraphQL, API'ler için bir sorgu dilidir ve bu sorguları mevcut verilerinizle yerine getirmek için bir çalışma zamanıdır. GraphQL, API'nizdeki verilerin tam ve anlaşılır bir açıklamasını sağlar, istemcilere tam olarak neye ihtiyaçları olduğunu ve daha fazlasını sorma gücü verir, API'leri zaman içinde geliştirmeyi kolaylaştırır ve güçlü geliştirici araçlarını etkinleştirir.

API'nize bir GraphQL sorgusu gönderin ve tam olarak ihtiyacınız olanı, daha fazlasını ve daha azını alın. GraphQL sorguları her zaman tahmin edilebilir sonuçlar döndürür. GraphQL kullanan uygulamalar, sunucuyu değil aldıkları verileri kontrol ettikleri için hızlı ve kararlıdır.

GraphQL sorguları sadece bir kaynağın özelliklerine erişmez, aynı zamanda aralarındaki referansları da sorunsuzca takip eder. Tipik REST API'leri birden çok URL'den yüklenmeyi gerektirirken, GraphQL API'ları uygulamanızın ihtiyaç duyduğu tüm verileri tek bir istekte alır. GraphQL kullanan uygulamalar yavaş mobil ağ bağlantılarında bile hızlı olabilir.

GraphQL API'leri uç noktalar değil, türler ve alanlar açısından düzenlenmiştir. Tek bir uç noktadan verilerinizin tüm özelliklerine erişin. GraphQL, Uygulamaların yalnızca neyin mümkün olduğunu sorduğundan ve açık ve yararlı hatalar sağladığından emin olmak için türleri kullanır. Uygulamalar manuel ayrıştırma kodu yazmamak için türleri kullanabilir.


Verilerin getirilmesi için bir JavaScript kitaplığı olan Falcor

Falcor, tüm uzak veri kaynaklarınızı sanal bir JSON grafiği aracılığıyla tek bir etki alanı modeli olarak temsil etmenizi sağlar. İstemcideki bellekte veya sunucudaki ağ üzerinden veri nerede olursa olsun aynı şekilde kodlarsınız.

JavaScript benzeri bir yol sözdizimi, istediğiniz zaman, istediğiniz kadar veya az veriye erişmeyi kolaylaştırır. Verilerinizi get, set ve call gibi tanıdık JavaScript işlemlerini kullanarak alırsınız. Verilerinizi biliyorsanız, API'nızı bilirsiniz.

Falcor, grafiğinizdeki referansları otomatik olarak tarar ve gerektiğinde istekte bulunur. Falcor, tüm ağ iletişimlerini, fırsatçı gruplama ve dupleksleme isteklerini şeffaf bir şekilde işler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.