Skip to content

RESTful API built with Golang and Gin for authentication (JWT) and user management.

Notifications You must be signed in to change notification settings

cessadev/go-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-api-gin

Descripción:
Esta es una API RESTful construida en Golang utilizando el framework Gin. La API permite la autenticación y gestión de usuarios, conectándose a una base de datos MongoDB. La estructura sigue buenas prácticas de separación de responsabilidades y utiliza docker-compose para facilitar el despliegue de MongoDB.

Características

  • Autenticación de usuario con JWT.
  • Gestión de usuarios (registro y obtención).
  • Conexión a MongoDB para almacenamiento de datos.
  • Arquitectura limpia con separación de handlers, servicios y repositorios.
  • Uso de Gin como framework HTTP con middlewares de recuperación y registro.
  • Configuración de base de datos en archivo dedicado.

Tecnologías

  • Golang
  • Gin - Framework para el enrutamiento HTTP.
  • MongoDB - Base de datos NoSQL.
  • Docker y Docker Compose - Para ejecutar MongoDB en un contenedor.
  • JWT - Para autenticación basada en tokens.

Requisitos

  • Golang 1.23 o superior
  • Docker y Docker Compose (para MongoDB)

Instalación y Configuración

  1. Clonar el repositorio:

    git clone https://github.com/cessadev/golang-api-gin.git
    cd golang-api-gin
  2. Configurar Docker Compose para MongoDB:

    Crea un archivo docker-compose.yml en la raíz del proyecto:

    version: "3.8"
    services:
      mongodb:
        image: mongo
        container_name: mongodb
        ports:
          - "27017:27017"
        environment:
          MONGO_INITDB_ROOT_USERNAME: root
          MONGO_INITDB_ROOT_PASSWORD: example
  3. Ejecutar MongoDB:

    Inicia el contenedor de MongoDB:

    docker-compose up --build
  4. Configurar la conexión a la base de datos:

    En config/database.go, se utiliza esta cadena de conexión para MongoDB:

    clientOptions := options.Client().ApplyURI("mongodb://root:example@localhost:27017")
  5. Ejecutar la API:

    go run cmd/api/main.go

    Si la conexión es exitosa, deberías ver en la consola:

    Conectado a MongoDB
    [GIN-debug] Listening and serving HTTP on :8080
    

Endpoints de la API

Autenticación

  • Login
    POST /auth/login

    Body (JSON):

    {
      "email": "[email protected]",
      "password": "yourpassword"
    }

    Respuesta:

    {
      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
    }

Usuarios

  • Crear usuario
    POST /users

    Body (JSON):

    {
      "name": "Jorge Mahp",
      "email": "[email protected]",
      "password": "yourpassword"
    }

    Respuesta:

    {
      "id": "60c72b2f5f1b2c001c8e4c3e",
      "name": "Jorge Mahp",
      "email": "[email protected]"
    }
  • Obtener usuario por ID
    GET /users/:id

    Respuesta:

    {
      "id": "60c72b2f5f1b2c001c8e4c3e",
      "name": "Jorge Mahp",
      "email": "[email protected]"
    }

Seguridad y Modo de Producción

Para poner esta API en producción:

  1. Cambia el modo de debug a release:

    gin.SetMode(gin.ReleaseMode)
  2. Configura proxies de confianza si tu API está detrás de un balanceador de carga o proxy.

  3. Variables de Entorno: Reemplaza credenciales sensibles y configuraciones de MongoDB con variables de entorno.

Licencia

Este proyecto está bajo la licencia MIT. Puedes hacer uso del código para tus propios proyectos.

About

RESTful API built with Golang and Gin for authentication (JWT) and user management.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages