GraphQL Query Formatter
Форматируйте и улучшайте GraphQL-запросы, мутации, подписки и фрагменты с правильным отступом.
Об этом инструменте
GraphQL — это мощный язык запросов для API, но при работе со сложными запросами, мутациями и подписками необработанный текст может стать трудным для чтения и отладки. GraphQL Query Formatter берёт ваш неотформатированный или плохо отформатированный код GraphQL и автоматически переструктурирует его с надлежащим отступом и интервалами, что значительно облегчает его понимание с первого взгляда. Это особенно полезно при интеграции с API, тестировании различных структур запросов или сотрудничестве с членами команды, которым нужно просмотреть ваш код.
Использовать инструмент просто: вставьте ваш запрос GraphQL, мутацию, подписку или фрагмент в поле ввода и нажмите кнопку форматирования. Средство форматирования мгновенно анализирует ваш код, добавляет надлежащие отступы, выравнивает вложенные поля и аргументы, обеспечивает согласованное расстояние между элементами. Затем вы можете скопировать красиво отформатированный результат и использовать его в своих проектах, документации или инструментах тестирования API. Он обрабатывает сложные сценарии, включая вложенные выборки, псевдонимы, переменные, директивы и встроенные фрагменты.
Этот инструмент особенно полезен для разработчиков, работающих с Apollo Client, Relay или любой библиотекой GraphQL, а также для инженеров backend, управляющих серверами GraphQL. Он экономит время по сравнению с ручным форматированием и помогает выявить синтаксические ошибки перед отправкой запросов на ваш API. Независимо от того, изучаете ли вы GraphQL, отлаживаете сложный запрос или готовите код к проверке, надёжный форматер гарантирует, что ваши запросы всегда ясны и профессиональны.
Часто задаваемые вопросы
Реализация кода
def format_graphql(query: str, indent: int = 2) -> str:
"""Simple GraphQL formatter."""
result = []
depth = 0
pad = " " * indent
i = 0
q = query.strip()
while i < len(q):
ch = q[i]
if ch == '"':
# Consume string
j = i + 1
while j < len(q):
if q[j] == "\\" and j + 1 < len(q):
j += 2
continue
if q[j] == '"':
j += 1
break
j += 1
result.append(q[i:j])
i = j
continue
if ch == "{":
result.append(" {\n")
depth += 1
result.append(pad * depth)
elif ch == "}":
depth = max(0, depth - 1)
result.append("\n" + pad * depth + "}")
elif ch in ("\n", "\r", " ", "\t"):
if result and result[-1] not in ("\n", " ", "{\n"):
result.append(" ")
else:
result.append(ch)
i += 1
return "".join(result).strip()
query = """
query GetUser($id: ID!) {user(id: $id) {id name email posts {title}}}
"""
print(format_graphql(query))Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.