GraphQL¶
🌐 Yapay Zekâ ve İnsanlar Tarafından Çeviri
Bu çeviri, insanlar tarafından yönlendirilen bir yapay zekâ ile oluşturuldu. 🤝
Orijinal anlamın yanlış anlaşılması ya da kulağa doğal gelmeme gibi hatalar içerebilir. 🤖
Yapay zekâyı daha iyi yönlendirmemize yardımcı olarak bu çeviriyi iyileştirebilirsiniz.
FastAPI, ASGI standardını temel aldığı için ASGI ile uyumlu herhangi bir GraphQL kütüphanesini entegre etmek oldukça kolaydır.
Aynı uygulama içinde normal FastAPI path operation'larını GraphQL ile birlikte kullanabilirsiniz.
İpucu
GraphQL bazı çok özel kullanım senaryolarını çözer.
Yaygın web API'lerle karşılaştırıldığında avantajları ve dezavantajları vardır.
Kendi senaryonuz için faydaların, olumsuz yönleri telafi edip etmediğini mutlaka değerlendirin. 🤓
GraphQL Kütüphaneleri¶
Aşağıda ASGI desteği olan bazı GraphQL kütüphaneleri var. Bunları FastAPI ile kullanabilirsiniz:
- Strawberry 🍓
- Ariadne
- Tartiflette
- ASGI entegrasyonu sağlamak için Tartiflette ASGI ile
- Graphene
Strawberry ile GraphQL¶
GraphQL ile çalışmanız gerekiyorsa ya da bunu istiyorsanız, Strawberry önerilen kütüphanedir; çünkü tasarımı FastAPI'nin tasarımına en yakındır ve her şey type annotation'lar üzerine kuruludur.
Kullanım senaryonuza göre farklı bir kütüphaneyi tercih edebilirsiniz; ancak bana sorarsanız muhtemelen Strawberry'yi denemenizi önerirdim.
Strawberry'yi FastAPI ile nasıl entegre edebileceğinize dair küçük bir ön izleme:
import strawberry
from fastapi import FastAPI
from strawberry.fastapi import GraphQLRouter
@strawberry.type
class User:
name: str
age: int
@strawberry.type
class Query:
@strawberry.field
def user(self) -> User:
return User(name="Patrick", age=100)
schema = strawberry.Schema(query=Query)
graphql_app = GraphQLRouter(schema)
app = FastAPI()
app.include_router(graphql_app, prefix="/graphql")
Strawberry hakkında daha fazlasını Strawberry dokümantasyonunda öğrenebilirsiniz.
Ayrıca FastAPI ile Strawberry dokümanlarına da göz atın.
Starlette'teki Eski GraphQLApp¶
Starlette'in önceki sürümlerinde Graphene ile entegrasyon için bir GraphQLApp sınıfı vardı.
Bu sınıf Starlette'te kullanımdan kaldırıldı (deprecated). Ancak bunu kullanan bir kodunuz varsa, aynı kullanım senaryosunu kapsayan ve neredeyse aynı bir interface sağlayan starlette-graphene3'e kolayca migrate edebilirsiniz.
İpucu
GraphQL'e ihtiyacınız varsa, custom class ve type'lar yerine type annotation'lara dayandığı için yine de Strawberry'yi incelemenizi öneririm.
Daha Fazlasını Öğrenin¶
GraphQL hakkında daha fazlasını resmi GraphQL dokümantasyonunda öğrenebilirsiniz.
Ayrıca yukarıda bahsedilen kütüphanelerin her biri hakkında, kendi bağlantılarından daha fazla bilgi okuyabilirsiniz.