Ana içeriğe geç

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.

İngilizce sürüm

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 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.