본문으로 건너뛰기
🛠️ToolsShed

GraphQL Query Formatter

GraphQL 쿼리, 뮤테이션, 구독, 프래그먼트를 포맷하고 적절한 들여쓰기로 정렬합니다.

이 도구 소개

GraphQL은 강력한 쿼리 언어이지만, 복잡한 쿼리, 뮤테이션, 구독을 다룰 때 원본 텍스트는 읽기 어렵고 디버깅이 어려워질 수 있습니다. GraphQL Query Formatter는 형식이 지정되지 않거나 형식이 잘못된 GraphQL 코드를 자동으로 재구조화하여 적절한 들여쓰기와 간격을 추가하여 한눈에 이해하기 쉽게 만듭니다. 이는 API와의 통합, 다양한 쿼리 구조 테스트, 또는 팀 멤버가 코드를 검토해야 할 때 특히 유용합니다.

도구 사용은 간단합니다. GraphQL 쿼리, 뮤테이션, 구독 또는 프래그먼트를 입력 영역에 붙여넣고 형식 지정 버튼을 클릭하면 됩니다. 포매터는 즉시 코드를 분석하고 적절한 들여쓰기를 추가하며 중첩된 필드와 인수를 정렬하고 전체적으로 일관된 간격을 보장합니다. 그런 다음 아름답게 형식이 지정된 결과를 복사하여 프로젝트, 문서 또는 API 테스트 도구에서 사용할 수 있습니다. 중첩된 선택, 별칭, 변수, 지시문 및 인라인 프래그먼트를 포함한 복잡한 시나리오를 처리합니다.

이 도구는 Apollo Client, Relay 또는 모든 GraphQL 클라이언트 라이브러리를 사용하는 개발자뿐만 아니라 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.