You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4.6 KiB

GraphQL

Оскільки FastAPI базується на стандарті ASGI, дуже просто інтегрувати будь-яку бібліотеку GraphQL, сумісну з ASGI.

Ви можете поєднувати звичайні операції шляху FastAPI з GraphQL в одному застосунку.

/// tip | Порада

GraphQL розв’язує деякі дуже специфічні сценарії використання.

Порівняно зі звичайними веб-API він має переваги та недоліки.

Переконайтеся, що переваги для вашого випадку використання переважають недоліки. 🤓

///

Бібліотеки GraphQL

Ось деякі бібліотеки GraphQL з підтримкою ASGI. Ви можете використовувати їх із FastAPI:

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.

Також ви можете почитати більше про кожну з цих бібліотек за наведеними посиланнями.