Hi gengz, di artikel kali ini saya akan coba bahas untuk membuat graphql dengan golang, Lets Go!
Mari kita buat dulu yang folder kosong, lalu masuk ke dalam foldernya

mkdir testgraphql
cd testgraphql
Saya akan menggunakan library berikut :
https://github.com/99designs/gqlgen
Selanjutnya yang akan kita lakukan adalah melakukan init terhadap folder

go mod init testgraphql
Yuk install dulu librarynya

go get github.com/99designs/gqlgen
Nah, kita init dulu yuk gqlgennya

go run github.com/99designs/gqlgen init
Setelah init, kita bisa melihat bahwa saat ini di dalam folder testgraphql sudah ada structurenya

Bisa kita lihat juga bahwa schema sudah dibuatkan oleh gqlgen

Yuk kita rubah dulu resolver nya, supaya ada action yang kita lakukan di CreateTodo dan Todos, bisa di check di file schema.resolvers.go
package graph
// This file will be automatically regenerated based on the schema, any resolver implementations
// will be copied through when generating and any unknown code will be moved to the end.
import (
"context"
"fmt"
"math/rand"
"testgraphql/graph/generated"
"testgraphql/graph/model"
)
func (r *mutationResolver) CreateTodo(ctx context.Context, input model.NewTodo) (*model.Todo, error) {
todo := &model.Todo{
Text: input.Text,
ID: fmt.Sprintf("T%d", rand.Int()),
User: &model.User{ID: input.UserID, Name: "user " + input.UserID},
}
r.todos = append(r.todos, todo)
return todo, nil
}
func (r *queryResolver) Todos(ctx context.Context) ([]*model.Todo, error) {
return r.todos, nil
}
// Mutation returns generated.MutationResolver implementation.
func (r *Resolver) Mutation() generated.MutationResolver { return &mutationResolver{r} }
// Query returns generated.QueryResolver implementation.
func (r *Resolver) Query() generated.QueryResolver { return &queryResolver{r} }
type mutationResolver struct{ *Resolver }
type queryResolver struct{ *Resolver }
Lalu kita juga butuh update resolver.go
package graph
import "testgraphql/graph/model"
// This file will not be regenerated automatically.
//
// It serves as dependency injection for your app, add any dependencies you require here.
type Resolver struct{ todos []*model.Todo }
Yuk coba jalanin

Wah ada error nih, kenapa ya kira kira ? :), bisa kita lihat bahwa ada library yang belum kita install, yuk kita solve dulu

Yuk kita ulang lagi

Mangstap mamangz, server kita sudah jalan, coba liat di browser yuk, silahkan akses http://localhost:8080

Wow, sudah jalan ni gengz, kita coba query dibawah ini yuk

mutation createTodo {
createTodo(input:{text:"todo", userId:"1"}) {
user {
id
}
text
done
}
}
query findTodos {
todos {
text
done
user {
name
}
}
}
Wow, kereeeen, sudah jalan ya, kita bisa coba juga di Postman, jangan lupa memakai “Post” dan query diatas tidak bisa disatukan di Postman, kita harus pisah, bisa kita mulai dengan Create dulu

mutation createTodo {
createTodo(input:{text:"todo", userId:"1"}) {
user {
id
}
text
done
}
}
Create sudah berhasil, yuk kita coba Read

Congratulation, kita sudah berhasil nyoba nyoba graphql di Golang :)), untuk bacaan lebih lanjut, silahkan akses situsnya gqlgen dibawah ini ya
Tinggalkan Balasan