4.6 KiB
GraphQL
Оскільки FastAPI базується на стандарті ASGI, дуже просто інтегрувати будь-яку бібліотеку GraphQL, сумісну з ASGI.
Ви можете поєднувати звичайні операції шляху FastAPI з GraphQL в одному застосунку.
/// tip | Порада
GraphQL розв’язує деякі дуже специфічні сценарії використання.
Порівняно зі звичайними веб-API він має переваги та недоліки.
Переконайтеся, що переваги для вашого випадку використання переважають недоліки. 🤓
///
Бібліотеки GraphQL
Ось деякі бібліотеки GraphQL з підтримкою ASGI. Ви можете використовувати їх із FastAPI:
- Strawberry 🍓
- Ariadne
- Tartiflette
- З Tartiflette ASGI для інтеграції з ASGI
- Graphene
GraphQL зі Strawberry
Якщо вам потрібен або ви хочете використовувати GraphQL, Strawberry - рекомендована бібліотека, адже її дизайн найближчий до дизайну FastAPI; усе базується на анотаціях типів.
Залежно від вашого сценарію використання ви можете надати перевагу іншій бібліотеці, але якби ви запитали мене, я, ймовірно, порадив би спробувати Strawberry.
Ось невеликий приклад того, як інтегрувати Strawberry з FastAPI:
{* ../../docs_src/graphql_/tutorial001_py310.py hl[3,22,25] *}
Більше про Strawberry ви можете дізнатися в документації Strawberry.
І також документацію про Strawberry з FastAPI.
Застарілий GraphQLApp зі Starlette
Попередні версії Starlette містили клас GraphQLApp для інтеграції з Graphene.
Його вилучено з Starlette як застарілий, але якщо у вас є код, що його використовував, ви можете легко мігрувати на starlette-graphene3, який покриває той самий сценарій використання та має майже ідентичний інтерфейс.
/// tip | Порада
Якщо вам потрібен GraphQL, я все ж рекомендую звернути увагу на Strawberry, адже він базується на анотаціях типів, а не на власних класах і типах.
///
Дізнайтеся більше
Ви можете дізнатися більше про GraphQL в офіційній документації GraphQL.
Також ви можете почитати більше про кожну з цих бібліотек за наведеними посиланнями.