Open Source @ UNA

Repositorio Open Source de documentación en nuevas tecnologías


Project maintained by tfg2021-escinf-una Hosted on GitHub Pages — Theme by mattgraham

Regresar

Setup

En el siguiente link encontrará el repositorio creado para este ejemplo práctico: https://github.com/tfg2021-escinf-una/covid-info/ . En caso de tener alguna duda con el código, puede revisar directamente en el repositorio, o bien, clonarlo y modificarlo.

  1. Abrir el repositorio microservices-tutorial/covid-info-microservice en el editor de texto

  2. En este momento la lista de archivos en el proyecto es la siguiente:

microservices-tutorial
│
└─── covid-info-microservice
│   │   README.md
│   │   .gitignore
│   │   LICENSE
  1. Para inicializar el proyecto de Go es necesario crear un módulo para manejar las dependencias go mod init covid-info En este archivo se pueden ver todas las dependencias que se instalan para el proyecto. Un ejemplo del archivo go.mod es el siguiente: go.mod

  2. Cree el archivo main.go y copie el contenido del siguiente link: main.go.

Análisis del código copiado

import (
	docs "covid-info/docs"
	"encoding/json"
	"io/ioutil"
	"net/http"
	"os"
    "fmt"

	"github.com/gin-gonic/gin"
	"github.com/swaggo/files"
	"github.com/swaggo/gin-swagger"
)
var API_HOST string
var API_KEY string
var API_URL string
func main() {
    router := gin.Default()
	router.Use(CORS)
    docs.SwaggerInfo.BasePath = "/api/v1"
    v1 := router.Group("/api/v1")
    API_HOST = os.Getenv("API_HOST")
    API_KEY = os.Getenv("API_KEY")

    router.GET("/vaccines", getVaccines)
    router.GET("/worldData", getWorldData)
	router.GET("/news", getCovidNews)
	router.GET("/liveness", liveness)

    router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
    router.Run("0.0.0.0:8080")
}
func getVaccines(c *gin.Context) {
	url := fmt.Sprintf("%s/vaccines/get-all-vaccines", API_URL)
	req, _ := http.NewRequest("GET", url, nil)
	req.Header.Add("X-RapidAPI-Host", API_HOST)
	req.Header.Add("X-RapidAPI-Key", API_KEY)
	res, err := http.DefaultClient.Do(req)
    errorValidation(err, c)
	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)
    var data any
    json.Unmarshal(body, &data)
    c.IndentedJSON(http.StatusOK, data)
}
func getWorldData(c *gin.Context) {
    ...
}
func getCovidNews(c *gin.Context) {
    ...
}
  1. Instalar las dependencias del go.mod go get .
  2. Declarar las variables de entorno API_HOST y API_KEY con la información obtenida de RapidAPI.

  3. Ejecutar el servidor go run .

Una vez realizados todos estos pasos, el servidor está listo para recibir peticiones HTTP en el puerto 8080.

AnteriorSiguiente