Golang — Número a Palabra (Kata) REST API — pt. 3

Leo Gutiérrez
3 min readAug 10, 2023

En el post anterior vimos cómo obtener la entrada de usuario desde la CLI (Command Line Interface) y usar os.Args. En este veremos cómo utilizar el paquete net/http para manejar peticiones HTTP y generar una respuesta, luego modificaremos el código para utilizar gorilla/mux.

Empecemos por separar la funcionalidad con un nuevo branch:

git checkout -b rest-simple  

La he llamado "rest-simple" porque en esta primera iteración no usaremos paquetes o librerías externas.

El código resultado es muy sencillo:

package main

import (
"fmt"
"net/http"
"strconv"
)

func main() {
http.HandleFunc("/n2w", func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")

queryParams := r.URL.Query()
input := queryParams.Get("num")

number, err := strconv.Atoi(input)
if err != nil {
http.Error(w, "Invalid input: numeric value required", http.StatusBadRequest)
} else {
response := []byte(fmt.Sprintf(`{"num": "%d", "word": "%s"}`, number, numToWord(number)))

w.Write(response)
}
})

port := 8080
fmt.Printf("Server is listening on port %d...\n", port)
err := http.ListenAndServe(fmt.Sprintf(":%d", port), nil)
if err != nil {
panic(err)
}
}

Al ser un servidor HTTP debemos preocuparnos por responder con el status code adecuado basado en el escenario…

--

--

Leo Gutiérrez

Hi! I am Leonardo Gutiérrez R., a passionate software developer, I hope you find the content in this blog interesting. I write about IT related stuff.