¿Cómo leer diferentes tipos de peticiones web?
Es posible realizar peticiones de diferentes tipos a la misma ruta, esto permite construir lo que conocemos como Rest APIs.
Ejemplo de lectura de diferentes tipos de peticiones web en Go
package main
import (
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/" {
http.NotFound(w, r)
return
}
switch r.Method {
case "GET":
w.Write([]byte("Peticion mediante GET"))
case "POST":
w.Write([]byte("Peticion mediante POST"))
case "PUT":
w.Write([]byte("Peticion mediante PUT"))
case "DELETE":
w.Write([]byte("Peticion mediante DELETE"))
case "PATCH":
w.Write([]byte("Peticion mediante PATCH"))
default:
w.Write([]byte("Peticion mediante metodo desconocido"))
}
})
http.ListenAndServe(":8000", nil)
}
La clave para poder elegir que método utilizar es mediante el uso de switch.
switch r.Method {
case "GET":
w.Write([]byte("Peticion mediante GET"))
case "POST":
w.Write([]byte("Peticion mediante POST"))
case "PUT":
w.Write([]byte("Peticion mediante PUT"))
case "DELETE":
w.Write([]byte("Peticion mediante DELETE"))
case "PATCH":
w.Write([]byte("Peticion mediante PATCH"))
default:
w.Write([]byte("Peticion mediante metodo desconocido"))
}
Ahora podemos realizar peticiones al servidor mediante diferentes métodos utilizando curl.
$ curl http://localhost:8000/ -X GET
Peticion mediante GET
$ curl http://localhost:8000/ -X POST
Peticion mediante POST
$ curl http://localhost:8000/ -X PUT
Peticion mediante PUT
$ curl http://localhost:8000/ -X DELETE
Peticion mediante DELETE
$ curl http://localhost:8000/ -X PATCH
Peticion mediante PATCH