Voltar

Graphql com GOLang usando gqlgen backdrop

/ 2 min read

Graphql com GOLang usando gqlgen

Última atualização:

Minha experiência com o projeto

Este projeto foi criado junto com a plataforma do FullCycle para aprender mais sobre golang e graphql, um aprendizado de ouro, não achei que seria tão simples e “fácil” de executar quando eu o vi pela primeira vez. Neste projeto foi utilizado gqlgen que é uma biblioteca em Go para construir backends em graphql, utilizando Schema First Approach como eles gostam de dizer e realmente me surpreendi com a facilidade e o resultado.

A utilização do gqlgen é bem simples, basta utilizar o go mod init e adiciona-lo ao projeto e sair testando e aprendendo mais sobre esta biblioteca incrível.

Iniciando gqlgen do zero

Iniciando novo módulo:

Terminal window
mkdir example
cd example
go mod init example

Adicionando ferramentas ao projeto:

Terminal window
printf '//go:build tools\npackage tools\nimport (_ "github.com/99designs/gqlgen"\n _ "github.com/99designs/gqlgen/graphql/introspection")' | gofmt > tools.go
go mod tidy

Gerar configuração e modelos:

Terminal window
go run github.com/99designs/gqlgen init
go mod tidy

Iniciar o servidor:

Terminal window
mkdir example
cd example
go mod init example

Gerar configurações e modelos:

Terminal window
go run server.go

Veja mais na documentação do gqlgen

Funcionalidades do projeto

  • Create category
  • Create course
  • Find categories
  • Find categories with courses
  • Find courses
  • Find courses with category

Iniciar o servidor:

Terminal window
go run cmd/server/server.go

Graphql queries:

# Create category #
mutation createCategory {
createCategory(input: { name: "Tecnologia", description: "Cursos de Tecnologia" }) {
id
name
description
}
}
# Create course #
mutation createCourse {
createCourse(
input: {
name: "Full Cycle"
description: "The best!"
categoryId: "53ff5e69-79ea-4fd5-bbfc-867e09a89a85"
}
) {
id
name
}
}
# Find categories #
query queryCategories {
categories {
id
name
description
}
}
# Find categories with courses #
query queryCategoriesWithCourses {
categories {
id
name
description
courses {
id
name
}
}
}
# Find courses #
query queryCourses {
courses {
id
name
}
}
# Find courses with category #
query queryCoursesWithCategory {
courses {
id
name
description
category {
id
name
description
}
}
}

Código fonte no Github

Todo o projeto foi desenvolvido utilizando o Github para controle de versão, cada commit tem uma feat nova.

Acessar o projeto no Github