API GraphQL con Go: tutorial paso a paso para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course
```html

Introducción a GraphQL y Go



GraphQL es un lenguaje de consultas para API, desarrollado por Facebook. A diferencia de REST, donde cada endpoint devuelve una estructura de datos fija, GraphQL permite al cliente solicitar solo los campos que necesita. Esto reduce la cantidad de solicitudes y el volumen de datos transferidos. Go (Golang) es una excelente opción para crear API de alto rendimiento gracias a su velocidad, tipado estático y soporte integrado para concurrencia.



En este tutorial crearemos una API GraphQL simple en Go para gestionar una lista de libros. Aprenderá cómo configurar el servidor, definir el esquema, escribir resolvers y ejecutar consultas y mutaciones.



Configuración del proyecto e instalación de bibliotecas



Inicialización del módulo Go



Cree un nuevo directorio para el proyecto e inicialice el módulo:



mkdir graphql-go-tutorialcd graphql-go-tutorialgo mod init graphql-go-tutorial


Instalación de la biblioteca graphql-go



Usaremos la biblioteca popular graphql-go/graphql. Instálela con el comando:



go get github.com/graphql-go/graphqlgo get github.com/graphql-go/handler


La primera biblioteca proporciona el núcleo de GraphQL, y la segunda un manejador HTTP para la integración con el servidor web.



Creación de la estructura de datos y el esquema GraphQL



Definición del tipo Book



Cree el archivo main.go y comience definiendo la estructura de datos del libro y el tipo GraphQL correspondiente:



package main

import ( "github.com/graphql-go/graphql" "github.com/graphql-go/handler" "net/http")

// Book — estructura de datos del librotype Book struct { ID string `json:"id"` Title string `json:"title"` Author string `json:"author"` Year int `json:"year"`}

// Definimos el tipo GraphQL para el librovar bookType = graphql.NewObject( graphql.ObjectConfig{ Name: "Book", Fields: graphql.Fields{ "id": &graphql.Field{Type: graphql.String}, "title": &graphql.Field{Type: graphql.String}, "author": &graphql.Field{Type: graphql.String}, "year": &graphql.Field{Type: graphql.Int}, }, },)


Creación de la consulta raíz (Query)



Añadiremos un almacenamiento de libros en memoria y una consulta raíz para obtener la lista y un libro individual:



// Simulación de base de datosvar books = []Book{    {ID: "1", Title: "Guerra y Paz", Author: "León Tolstói", Year: 1869},    {ID: "2", Title: "Crimen y Castigo", Author: "Fiódor Dostoyevski", Year: 1866},    {ID: "3", Title: "El Maestro y Margarita", Author: "Mijaíl Bulgákov", Year: 1967},}

// Consulta raízvar queryType = graphql.NewObject( graphql.ObjectConfig{ Name: "Query", Fields: graphql.Fields{ "books": &graphql.Field{ Type: graphql.NewList(bookType), Resolve: func(p graphql.ResolveParams) (interface{}, error) { return books, nil }, }, "book": &graphql.Field{ Type: bookType, Args: graphql.FieldConfigArgument{ "id": &graphql.ArgumentConfig{Type: graphql.String}, }, Resolve: func(p graphql.ResolveParams) (interface{}, error) { id, _ := p.Args["id"].(string) for _, book := range books { if book.ID == id { return book, nil } } return nil, nil }, }, }, },)


Añadir mutaciones (Mutation)



Las mutaciones permiten modificar datos. Añadiremos la posibilidad de agregar nuevos libros:



// Mutación para añadir un librovar mutationType = graphql.NewObject(```                

Blogs

Book Recommendations