Konversi JSON ke Schema GraphQL Online
Hasilkan skema GraphQL dari JSON secara otomatis, langsung di browser Anda.
Untuk apa alat ini
JSON ke Skema GraphQL
Kompatibel dengan Apollo Server
Skema siap digunakan di Apollo Server, GraphQL Yoga, Pothos, Nexus, atau implementasi GraphQL apa pun.
100% privat
JSON API Anda diproses hanya di browser Anda. Struktur data sensitif tidak pernah meninggalkan perangkat Anda.
Tipe yang tepat
Mendeteksi String, Int, Float, Boolean, ID. Objek bertingkat menghasilkan tipe mereka sendiri. Array sebagai daftar [Tipe].
Instan
Skema GraphQL siap dalam milidetik. Tanpa daftar, tanpa menunggu, tanpa batas.
Cara kerjanya
Tiga langkah, tanpa kerumitan
Tempel JSON Anda
Tempel objek JSON apa pun. Alat ini menganalisis struktur dan menghasilkan tipe GraphQL yang sesuai.
Skema GraphQL dihasilkan
Anda mendapatkan tipe GraphQL dengan semua field yang diketik dengan benar: String, Int, Float, Boolean, dan ID. Objek bertingkat menghasilkan tipe mereka sendiri.
Salin dan gunakan di Apollo Server
Salin skema dan tempel ke server GraphQL Anda (Apollo Server, GraphQL Yoga, Pothos) sebagai titik awal.
FAQ
Ada pertanyaan?
GraphQL adalah bahasa kueri untuk API yang dikembangkan oleh Facebook (sekarang Meta) pada 2012 untuk penggunaan internal dan dipublikasikan sebagai spesifikasi open-source pada 2015. Ini diciptakan untuk mengatasi keterbatasan REST pada aplikasi mobile: over-fetching (menerima lebih banyak data dari yang diperlukan), under-fetching (membutuhkan beberapa permintaan), dan kurangnya kontrak bertipe. Implementasi pertama ada di klien iOS Facebook. Saat ini GraphQL digunakan oleh GitHub, Twitter, Shopify, Airbnb, Pinterest, dan ribuan perusahaan. Spesifikasinya dikelola oleh GraphQL Foundation (bagian dari Linux Foundation).
Dalam GraphQL, type mendefinisikan struktur data yang dapat dikembalikan server (dalam kueri dan mutasi), sedangkan input mendefinisikan struktur data yang dapat dikirim klien (argumen mutasi). Misalnya, type User { id: ID!, name: String!, email: String! } mendefinisikan objek User yang dapat dikembalikan, sedangkan input CreateUserInput { name: String!, email: String! } mendefinisikan field yang diterima mutasi createUser. Type dapat memiliki resolver yang menghitung field secara dinamis; input adalah kontainer data sederhana. Alat ini menghasilkan type untuk memodelkan respons JSON yang sudah ada.
GraphQL mendefinisikan 5 tipe skalar primitif dalam spesifikasi: String (teks UTF-8), Int (bilangan bulat 32-bit bertanda), Float (desimal presisi ganda), Boolean (true/false), dan ID (penanda unik, direpresentasikan sebagai String atau Int). Server GraphQL dapat mendefinisikan skalar kustom tambahan: Date, DateTime, URL, Email, JSON, UUID, dan lain-lain. Misalnya, paket graphql-scalars (untuk Node.js) menawarkan lebih dari 50 skalar kustom. Alat ini menggunakan 5 skalar standar untuk kompatibilitas maksimal.
Dalam GraphQL, setiap objek bertingkat dalam JSON menjadi tipe terpisah. Jika JSON memiliki struktur dengan field order yang berisi product dengan id dan name, maka dihasilkan: type RootType { order: Order }, type Order { product: Product }, type Product { id: Int, name: String }. Ini mencerminkan sifat skema GraphQL: semua tipe dinamai dan dapat digunakan kembali. Tipe Product yang sama dapat muncul di beberapa tipe induk. Array objek direpresentasikan sebagai [Product] (daftar Product).
Resolver adalah fungsi yang mengetahui cara mengambil data untuk field skema tertentu. Di Apollo Server, setiap field dari setiap tipe dapat memiliki resolver. Jika tidak ada yang didefinisikan, Apollo menggunakan DefaultFieldResolver yang hanya mengembalikan properti dengan nama yang sama dari objek induk. Resolver memungkinkan data berasal dari berbagai sumber: basis data, API lain, cache, atau kalkulasi real-time. Skema GraphQL (yang dihasilkan alat ini) mendefinisikan kontrak; resolver mengimplementasikan cara memenuhinya.
Adopsi GraphQL, Apollo Server, schema-first vs code-first, dan migrasi REST ke GraphQL
GraphQL dibuat open-source oleh Facebook pada Juli 2015 dan dengan cepat menghasilkan ekosistem yang dinamis. Apollo GraphQL (didirikan 2016) menciptakan Apollo Server dan Apollo Client, menjadi implementasi referensi. Pada 2018, GitHub memigrasikan API publiknya dari REST v3 ke GraphQL v4, sebuah tonggak yang memvalidasi GraphQL untuk API produksi skala besar. GraphQL Foundation dibentuk pada 2019 di bawah Linux Foundation untuk menstandarkan spesifikasi. Pada 2024, GraphQL adalah spesifikasi API kedua paling banyak digunakan setelah REST, hadir di sebagian besar startup dan banyak perusahaan Fortune 500.
Ada dua pendekatan utama untuk membangun API GraphQL: schema-first dan code-first. Dalam schema-first, Anda mendefinisikan skema SDL (Schema Definition Language) terlebih dahulu lalu mengimplementasikan resolver. Ini adalah pendekatan asli dan paling transparan: kontrak API terlihat dan dapat diedit sebagai teks. Dalam code-first, Anda mendefinisikan skema melalui kode (TypeScript dalam kasus Nexus atau Pothos): tipe didefinisikan sebagai objek JavaScript/TypeScript dan skema SDL dihasilkan secara otomatis. Code-first lebih disukai saat mencari type-safety end-to-end dengan TypeScript. Alat ini menghasilkan SDL (schema-first).
Migrasi dari REST ke GraphQL adalah proses bertahap yang banyak perusahaan lakukan dengan pola BFF (Backend For Frontend): alih-alih mengganti API REST yang ada, lapisan GraphQL ditambahkan yang menggabungkan beberapa endpoint REST. Pola ini, dipopulerkan oleh Netflix dan Airbnb, memungkinkan adopsi GraphQL secara inkremental tanpa mengganggu layanan yang sudah ada. GraphQL Federation (Apollo) melangkah lebih jauh: memungkinkan komposisi beberapa layanan GraphQL menjadi satu graph terpadu, memungkinkan arsitektur supergraph di mana setiap microservice mengekspos subgraph-nya sendiri.