Saltar a contenido

GraphQL

Como FastAPI se basa en el estándar ASGI, es muy fácil integrar cualquier paquete de GraphQL que también sea compatible con ASGI.

Puedes combinar las path operations normales de FastAPI con GraphQL en la misma aplicación.

Consejo

GraphQL resuelve algunos casos de uso muy específicos.

Tiene ventajas y desventajas en comparación con las APIs web comunes.

Asegúrate de evaluar si los beneficios para tu caso de uso compensan los inconvenientes. 🤓

Paquetes de GraphQL

Aquí algunos de los paquetes de GraphQL que tienen soporte ASGI. Podrías usarlos con FastAPI:

GraphQL con Strawberry

Si necesitas o quieres trabajar con GraphQL, Strawberry es el paquete recomendado ya que tiene un diseño muy similar al diseño de FastAPI, todo basado en anotaciones de tipos.

Dependiendo de tu caso de uso, podrías preferir usar un paquete diferente, pero si me preguntas, probablemente te sugeriría probar Strawberry.

Aquí tienes una pequeña vista previa de cómo podrías integrar Strawberry con FastAPI:

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")

Puedes aprender más sobre Strawberry en la documentación de Strawberry.

Y también la documentación sobre Strawberry con FastAPI.

GraphQLApp viejo de Starlette

Las versiones anteriores de Starlette incluían una clase GraphQLApp para integrar con Graphene.

Fue deprecada de Starlette, pero si tienes código que lo usaba, puedes fácilmente migrar a starlette-graphene3, que cubre el mismo caso de uso y tiene una interfaz casi idéntica.

Consejo

Si necesitas GraphQL, aún te recomendaría revisar Strawberry, ya que se basa en anotaciones de tipos en lugar de clases y tipos personalizados.

Aprende Más

Puedes aprender más sobre GraphQL en la documentación oficial de GraphQL.

También puedes leer más sobre cada uno de esos paquetes descritos arriba en sus enlaces.