¿Qué tipos de peticiones web existen?
De igual forma como es posible responder a diferentes tipos de contenido (content types), es posible responder a diferentes tipos de peticiones (type requests). Estos pueden ser GET, POST, PUT y DELETE. Para crear un servidor en Go que detecte responda en base al tipo de petición realizada podemos echar mano del valor Method* del objeto http.Request.
package main
import "net/http"
func Home(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/" {
http.NotFound(w, r)
return
}
switch r.Method {
case "GET":
w.Write([]byte("Se realizó una petición GET"))
case "POST":
w.Write([]byte("Se realizó una petición POST"))
case "PUT":
w.Write([]byte("Se realizó una petición PUT"))
case "DELETE":
w.Write([]byte("Se realizó una petición DELETE"))
default:
w.Write([]byte("Se realizó una petición " + r.Method))
}
}
func main() {
http.HandleFunc("/", Home)
http.ListenAndServe(":8000", nil)
}
Al igual que en el ejemplo en el que determinamos el content type, ahora hemos utilizado un switch para determinar el tipo de petición o request method.
En curl para especificar el tipo de petición se usa el parámetro -X GET.
¿Cómo realizar una petición GET con curl?
$ curl -is http://localhost:8000 -X GET
HTTP/1.1 200 OK
Date: Sun, 21 Apr 2019 02:07:43 GMT
Content-Length: 29
Content-Type: text/plain; charset=utf-8
Se realizó una petición GET
¿Cómo realizar una petición tipo POST con curl?
$ curl -is http://localhost:8000 -X POST
HTTP/1.1 200 OK
Date: Sun, 21 Apr 2019 02:08:19 GMT
Content-Length: 30
Content-Type: text/plain; charset=utf-8
Se realizó una petición POST
¿Cómo realizar una petición tipo PUT con curl?
$ curl -is http://localhost:8000 -X PUT
HTTP/1.1 200 OK
Date: Sun, 21 Apr 2019 02:09:26 GMT
Content-Length: 29
Content-Type: text/plain; charset=utf-8
Se realizó una petición PUT
¿Cómo realizar una petición tipo DELETE con curl?
$ curl -is http://localhost:8000 -X DELETE
HTTP/1.1 200 OK
Date: Sun, 21 Apr 2019 02:09:54 GMT
Content-Length: 32
Content-Type: text/plain; charset=utf-8
Se realizó una petición DELETE