GraphQL di Hono dan React: Cara Modern Membangun API yang Cepat & Fleksibel

I am an enthusiastic researcher and developer with a passion for using technology to innovate in business and education.
Search for a command to run...

I am an enthusiastic researcher and developer with a passion for using technology to innovate in business and education.
No comments yet. Be the first to comment.
Ringkasan: Jika OpenClaw adalah AI Operating System yang menghubungkan berbagai layanan dan agent, maka Hermes adalah AI Worker yang fokus mengerjakan pekerjaan, belajar dari pengalaman, dan semakin p

Ketika membangun aplikasi modern seperti Next.js, Cloudflare Workers, platform AI, microservices, atau real-time dashboard, ada banyak istilah jaringan yang sering muncul: TCP, UDP, HTTP/2, QUIC, WebS

Setiap tahun, ribuan mahasiswa jurusan Teknologi Informasi, Sistem Informasi, dan Teknik Informatika diwisuda. Namun, tidak sedikit di antara mereka yang kemudian menghadapi kenyataan yang cukup berat

Jika Anda menggunakan Next.js, kemungkinan besar Anda pernah mendengar anggapan bahwa: "Next.js = Vercel" Padahal kenyataannya tidak harus demikian. Di sinilah OpenNext hadir. OpenNext adalah proyek

Saat pertama kali mencoba OpenCode Go, saya hampir langsung berlangganan tanpa membaca detail program yang mereka sediakan. Untungnya saya menemukan bahwa OpenCode memiliki program referral yang membe

Dalam era aplikasi modern, pola komunikasi antara frontend–backend makin kompleks. Aplikasi butuh data yang sangat spesifik, tetapi API REST sering kali overfetching (data kebanyakan) atau underfetching (data kurang). Di sinilah GraphQL hadir sebagai solusi.
Artikel ini membahas bagaimana GraphQL diimplementasikan dengan Hono (server super ringan berbasis JavaScript/TypeScript) dan dikonsumsi oleh React sebagai frontend.
GraphQL memberikan beberapa keuntungan:
Frontend bisa meminta tepat data yang dibutuhkan:
query {
user(id: 1) {
name
email
}
}
REST biasanya mengembalikan seluruh objek.
GraphQL menyelesaikan masalah API REST yang terlalu banyak atau terlalu sedikit memberikan data.
REST biasanya banyak endpoint:
/users
/users/:id
/posts?user_id=1
DLL
GraphQL hanya punya satu endpoint:
POST /graphql
Schema didefinisikan secara jelas. Ini memberikan predictability, validasi otomatis, dan integrasi tooling yang sangat kuat.
Hono terkenal karena:
cepat,
sederhana,
sangat cocok untuk edge dan server ringan,
akses TypeScript yang kuat.
Untuk GraphQL, kita bisa menggunakan:
GraphQL Yoga atau
graphql-http
Berikut contoh menggunakan GraphQL Yoga karena paling stabil dan ramah TypeScript.
/src
├─ index.ts
├─ schema.ts
├─ resolvers.ts
├─ server.ts
schema.ts
import { createSchema } from 'graphql-yoga';
export const schema = createSchema({
typeDefs: /* GraphQL */ `
type User {
id: ID!
name: String!
email: String!
}
type Query {
users: [User!]!
user(id: ID!): User
}
`,
resolvers: {
Query: {
users: () => {
return [
{ id: 1, name: "Ariska", email: "ariska@example.com" },
];
},
user: (_, { id }) => {
return { id, name: "Ariska", email: "ariska@example.com" };
},
},
},
});
server.ts
import { Hono } from 'hono';
import { createYoga } from 'graphql-yoga';
import { schema } from './schema';
const app = new Hono();
const yoga = createYoga({
schema,
graphqlEndpoint: '/graphql',
});
app.use('/graphql', async (c) => {
return yoga.handleNodeRequest(c.req.raw);
});
export default app;
index.ts
import app from './server';
export default {
port: 3000,
fetch: app.fetch,
};
Jika Anda menggunakan Bun:
bun run index.ts
Jika menggunakan Node:
node --loader ts-node/esm index.ts
Sekarang kita masuk ke frontend.
React dapat menggunakan GraphQL melalui beberapa cara:
Apollo Client (paling populer)
urql (lebih ringan dan simple)
graphql-request (super minimalis)
Untuk aplikasi modern ringan, kita gunakan graphql-request agar tetap simple.
npm install graphql-request
graphql/client.ts
import { GraphQLClient } from 'graphql-request';
export const client = new GraphQLClient("http://localhost:3000/graphql");
App.jsx
import { useEffect, useState } from "react";
import { client } from "./graphql/client";
const QUERY = `
query {
users {
id
name
email
}
}
`;
export default function App() {
const [users, setUsers] = useState([]);
useEffect(() => {
client.request(QUERY).then((data) => setUsers(data.users));
}, []);
return (
<div>
<h1>Daftar Pengguna</h1>
<ul>
{users.map((u) => (
<li key={u.id}>{u.name} – {u.email}</li>
))}
</ul>
</div>
);
}
Frontend akan menampilkan data dari GraphQL pada Hono.
React mengirim GraphQL query ke backend
→ format JSON via POST /graphql
Hono menerima request
→ meneruskan ke GraphQL Yoga
Yoga menjalankan resolver
→ sesuai schema dan logika bisnis
Yoga mengembalikan JSON data ke React
React menampilkan ke UI
Alurnya sederhana, fleksibel, dan predictable.
✔ Data sering berubah bentuk tergantung halaman
✔ Menghindari banyak endpoint REST
✔ Butuh dokumentasi otomatis
✔ Banyak relasi kompleks
✔ Memerlukan query yang bisa dikustom
✔ Aplikasi sederhana
✔ Tidak banyak dependensi antar data
✔ Performanya harus sangat ringan dan cepat
✔ Dashboard internal yang tidak berubah-ubah
Hono + Yoga tetap jauh lebih ringan dibanding Express + Apollo.
Hono bisa berjalan di:
Bun
Node
Deno
Cloudflare Workers
Vercel Edge
Schema GraphQL bisa menghasilkan types otomatis.
Frontend bisa explore API via GraphiQL langsung.
GraphQL pada Hono dan React adalah kombinasi modern yang:
cepat,
ringan,
sangat fleksibel,
cocok untuk aplikasi multi-halaman atau mobile,
memudahkan scaling frontend tanpa harus ubah banyak di backend.
Jika Anda sedang mengembangkan dashboard, ecommerce, SaaS, atau aplikasi internal—kombinasi ini termasuk yang terbaik.