GraphQL¶
Так как FastAPI основан на стандарте ASGI, очень легко интегрировать любую библиотеку GraphQL, также совместимую с ASGI.
Вы можете комбинировать обычные операции пути FastAPI с GraphQL в одном приложении.
Совет
GraphQL решает некоторые очень специфические задачи.
У него есть как преимущества, так и недостатки по сравнению с обычными веб-API.
Убедитесь, что выгоды для вашего случая использования перевешивают недостатки. 🤓
Библиотеки GraphQL¶
Ниже приведены некоторые библиотеки GraphQL с поддержкой ASGI. Их можно использовать с FastAPI:
- Strawberry 🍓
- Ariadne
- Tartiflette
- С Tartiflette ASGI для интеграции с ASGI
- Graphene
GraphQL со Strawberry¶
Если вам нужно или хочется работать с GraphQL, Strawberry — рекомендуемая библиотека, так как её дизайн ближе всего к дизайну FastAPI, всё основано на аннотациях типов.
В зависимости от вашего сценария использования вы можете предпочесть другую библиотеку, но если бы вы спросили меня, я, скорее всего, предложил бы попробовать Strawberry.
Вот небольшой пример того, как можно интегрировать Strawberry с 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")
Подробнее о Strawberry можно узнать в документации Strawberry.
А также в документации по интеграции Strawberry с FastAPI.
Устаревший GraphQLApp
из Starlette¶
В предыдущих версиях Starlette был класс GraphQLApp
для интеграции с Graphene.
Он был объявлен устаревшим в Starlette, но если у вас есть код, который его использовал, вы можете легко мигрировать на starlette-graphene3, который решает ту же задачу и имеет почти идентичный интерфейс.
Совет
Если вам нужен GraphQL, я всё же рекомендую посмотреть Strawberry, так как он основан на аннотациях типов, а не на пользовательских классах и типах.
Подробнее¶
Подробнее о GraphQL вы можете узнать в официальной документации GraphQL.
Также можно почитать больше о каждой из указанных выше библиотек по приведённым ссылкам.