¿Cómo acepta golang los datos pasados por cartero en el método?
Lo que se está haciendo es vincular la ruta completa a procesar. /ubicación/{titanrolex}GetUser. Lo que realmente desea es vincular /ubicación/ para que sea manejado por un controlador (por ejemplo, LocationHandler).
Puedes hacer esto usando la biblioteca estándar u otro enrutador. Presentaré dos formas:
Biblioteca estándar:
import(
fmt
net//julienschmidt//julienschmidt// http
log
)
funcLocationHandler(whttp.ResponseWriter,r*http.Request,pshttprouter.Params){
fmt. (w,Ubicación:%s\n,ps.ByName(loc))
}
funcmain(){
router:=httprouter.New ( )
enrutador.GET(/ubicación/:loc,LocationHandler)
log.Fatal(http.ListenAndServe(:8080,enrutador))
}
Tenga en cuenta que httprouter utiliza una firma ligeramente diferente para los controladores. Esto se debe a que, como puedes ver, también pasa estos parámetros a la función.
Ah, y una nota más, puedes presionar http://localhost:8080/location/titanrolex con tu navegador (o algo así); si lo otro es lo suficientemente bueno, URLEncode estará codificado. como http://localhost:8080/location/titan%20rolex.