GraphQL¶
Como o FastAPI é baseado no padrão ASGI, é muito fácil integrar qualquer biblioteca GraphQL também compatível com ASGI.
Você pode combinar operações de rota normais do FastAPI com GraphQL na mesma aplicação.
Dica
GraphQL resolve alguns casos de uso muito específicos.
Ele tem vantagens e desvantagens quando comparado a web APIs comuns.
Certifique-se de avaliar se os benefícios para o seu caso de uso compensam as desvantagens. 🤓
Bibliotecas GraphQL¶
Aqui estão algumas das bibliotecas GraphQL que têm suporte ASGI. Você pode usá-las com FastAPI:
- Strawberry 🍓
- Ariadne
- Tartiflette
- Com Tartiflette ASGI para fornecer integração ASGI
- Graphene
GraphQL com Strawberry¶
Se você precisar ou quiser trabalhar com GraphQL, Strawberry é a biblioteca recomendada pois tem o design mais próximo ao design do FastAPI, ela é toda baseada em type annotations.
Dependendo do seu caso de uso, você pode preferir usar uma biblioteca diferente, mas se você me perguntasse, eu provavelmente sugeriria que você experimentasse o Strawberry.
Aqui está uma pequena prévia de como você poderia integrar Strawberry com FastAPI:
import strawberry
from fastapi import FastAPI
from strawberry.asgi import GraphQL
@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 = GraphQL(schema)
app = FastAPI()
app.add_route("/graphql", graphql_app)
app.add_websocket_route("/graphql", graphql_app)
Você pode aprender mais sobre Strawberry na documentação do Strawberry.
E também na documentação sobre Strawberry com FastAPI.
Antigo GraphQLApp
do Starlette¶
Versões anteriores do Starlette incluiam uma classe GraphQLApp
para integrar com Graphene.
Ela foi descontinuada do Starlette, mas se você tem código que a utilizava, você pode facilmente migrar para starlette-graphene3, que cobre o mesmo caso de uso e tem uma interface quase idêntica.
Dica
Se você precisa de GraphQL, eu ainda recomendaria que você desse uma olhada no Strawberry, pois ele é baseado em type annotations em vez de classes e tipos personalizados.
Saiba Mais¶
Você pode aprender mais sobre GraphQL na documentação oficial do GraphQL.
Você também pode ler mais sobre cada uma das bibliotecas descritas acima em seus links.