Перейти к содержимому

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.