GraphQL¶
🌐 Перевод выполнен с помощью ИИ и людей
Этот перевод был сделан ИИ под руководством людей. 🤝
В нем могут быть ошибки из-за неправильного понимания оригинального смысла или неестественности и т. д. 🤖
Вы можете улучшить этот перевод,помогая нам лучше направлять ИИ LLM.
Так как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:
importstrawberryfromfastapiimportFastAPIfromstrawberry.fastapiimportGraphQLRouter@strawberry.typeclassUser:name:strage:int@strawberry.typeclassQuery:@strawberry.fielddefuser(self)->User:returnUser(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.
Также можно почитать больше о каждой из указанных выше библиотек по приведённым ссылкам.







