Lewati ke konten
πŸ› οΈToolsShed

GraphQL Query Formatter

Format dan percantik query, mutasi, subscription, dan fragmen GraphQL dengan indentasi yang tepat.

Tentang alat ini

GraphQL adalah bahasa kueri yang kuat untuk API, tetapi saat Anda bekerja dengan kueri, mutasi, dan langganan yang kompleks, teks mentah dapat menjadi sulit dibaca dan di-debug. GraphQL Query Formatter mengambil kode GraphQL Anda yang tidak diformat atau diformat dengan buruk dan secara otomatis memstruktur ulang dengan indentasi yang tepat dan jarak, membuatnya jauh lebih mudah dipahami sekilas. Ini sangat berharga saat mengintegrasikan dengan API, menguji struktur kueri yang berbeda, atau berkolaborasi dengan anggota tim yang perlu meninjau kode Anda.

Menggunakan alat ini sangat mudah: tempel kueri, mutasi, langganan, atau fragmen GraphQL Anda ke area input dan klik tombol format. Pemformat secara instan menganalisis kode Anda, menambahkan indentasi yang tepat, menyelaraskan bidang dan argumen bersarang, dan memastikan jarak yang konsisten di seluruh. Anda kemudian dapat menyalin hasil yang diformat dengan indah dan menggunakannya dalam proyek, dokumentasi, atau alat pengujian API Anda. Ini menangani skenario kompleks termasuk pemilihan bersarang, alias, variabel, direktif, dan fragmen inline.

Alat ini sangat berguna bagi pengembang yang bekerja dengan Apollo Client, Relay, atau pustaka klien GraphQL apa pun, serta insinyur backend yang mengelola server GraphQL. Ini menghemat waktu dibandingkan dengan pemformatan manual dan membantu menangkap masalah sintaks sebelum mengirimkan permintaan ke API Anda. Baik Anda mempelajari GraphQL, men-debug kueri yang kompleks, atau menyiapkan kode untuk ditinjau, memiliki pemformat yang dapat diandalkan memastikan kueri Anda selalu jelas dan profesional.

Pertanyaan yang Sering Diajukan

Implementasi Kode

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.