These are the fundamental steps of creating GraphQL API with Go and gqlgen library.
go mod init
ile projeyi oluştur.- gqlgen paketini kur
printf '// +build tools\npackage tools\nimport (_ "github.com/99designs/gqlgen"\n _ "github.com/99designs/gqlgen/graphql/introspection")' | gofmt > tools.go
go run github.com/99designs/gqlgen init
ile gqlgen'i initialize etgqlgen.yml
-- Config dosyası, generate edilen kodlar üzerinde ayarlama yapmak için kullanılır.graph/generated/generated.go
-- GraphQL'in çalışmasını sağlayan kodlar. Otomatik generate edilir biz müdahale etmeyiz.graph/model/models_gen.go
-- Oluşturduğumuz schemalara göre otomatik generate edilen Go structlarıgraph/schema.graphqls
-- GraphQL schemalarımızı oluşturacağımız dosyagraph/schema.resolvers.go
-- Uygulamamızın logic kodlarını yazacağımız dosya. generated.go bu dosya içerisinde yazdığımız methodları kullanır.server.go
-- Uygulamamızın otomatik generate edilen entry point dosyası. Uygulama bu dosya üzerinden ayağa kaldırılır.
- Schemalarımızı oluşturduktan sonra
go run github.com/99designs/gqlgen generate
kodu çalıştırılır.- Eğer burada
validation failed: packages.Load
hatası alırsakgraph/schema.resolvers.go
dosyasındakiCreateTodo
veTodos
fonksiyonlarını silip komutu tekrar çalıştırmalıyız. Bunlar starter template ile gelen fonksiyonlardır.
- Eğer burada
- Queryleri schema.resolvers.go dosyası içinde yaz.
- Mutationları da schema.resolvers.go dosyası içinde yaz.
Örnek Query :
query {
links{
title
address,
user{
name
}
}
}
Örnek Mutation :
mutation {
createLink(input: {title: "new link", address:"http://address.org"}){
title,
user{
name
}
address
}
}
name: String!
-- buradaki ! işareti non nullable anlamına gelir.[Link!]!
-- hem array boş olamaz, hem de tüm Link elemanları dolu olmalı.