Saltar al contenido

GraphQL

Como FastAPI está basado en el estándar ASGI, es muy fácil integrar cualquier librería de GraphQL que también sea compatible con ASGI.

Puedes combinar 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 cuando se compara con APIs web comunes.

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

Librerías de GraphQL

Aquí hay algunas de las librerías de GraphQL que tienen soporte para ASGI. Podrías usarlas con FastAPI:

GraphQL con Strawberry

Si necesitas o quieres trabajar con GraphQL, Strawberry es la librería recomendada ya que tiene el diseño más cercano al diseño de FastAPI, todo está basado en anotaciones de tipo.

Dependiendo de tu caso de uso, podrías preferir usar una librería diferente, pero si me preguntas, probablemente te sugeriría que pruebes Strawberry.

Aquí hay un pequeño ejemplo 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.

El antiguo GraphQLApp de Starlette

Versiones anteriores de Starlette incluían una clase GraphQLApp para integrarse con Graphene.

Fue deprecada de Starlette, pero si tienes código que la usaba, puedes migrar fácilmente 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 está basado en anotaciones de tipo 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 una de esas librerías descritas arriba en sus enlaces.