A continuación podemos ver una simple Api RESTful en Go.
Esto es una continuación del post: API RESTful
A nivel de archivos encontramos los siguientes
- main.go -> este posee la definición de las rutas y la inicilización del servidor
- endpoitns/personas.go -> en este se encuentran cada uno de las operaciones sobre personas, asi como un mapeo de datos de ejemplos
Archivo: main.go
En la función main se tienen 3 bloques bien definidos en la funcion main(), con la cual inicia la aplicación
- Creamos el elemento router que será el encargado de recibir las peticiones y redireccionar a la función que corresponda. Para esto usamos el paquete Gorilla/mux
- Agregamos a cada router el hander a utilizar en el cual se indica
- La ruta por ejemplo /persona
- La función a ejecutar cuando solicitemos esa ruta
- El método que aceptamos para esa ruta
- Finalmente inicializamos el servidor
A continuación veremos unos ejemplos de Rutas
En esta primera definimos a que función se debe invocar cuando queremos hacer un GET a la ruta /personas
router.HandleFunc("/personas", endpoint.GetPersonas).Methods("GET")
Esta es igual a la anterior, solo que le indicamos que lo que llega luego de /persona debe llamarse ID y debe esta compuesto por números
router.HandleFunc("/personas/{ID:[0-9]+}", endpoint.GetPersonaById).Methods("GET")
Archivo: endpoints/personas.go
En este archivo tenemos las funciones definidas para cada una de las rutas
1.- Listar todos los datos
func GetPersonas(w http.ResponseWriter, r *http.Request) {
//Codifico el map en json
salidaJson, _ := json.Marshal(Sample)
//Inidico que los datos devueltos van en json
w.Header().Set("Content-Type", "application/json")
w.Write(salidaJson)
}
Cada función definida como handler debe tener los parámetros
- http.ResponseWriter: Este es utilizado para responder al cliente que consume el endpoint
- http.Request: Por medio de este obtenernos los datos enviados
1.- Retornar los datos solicitados
func GetPersonaById(w http.ResponseWriter, r *http.Request) {
//Obtengo las variables definidas en la ruta
vars := mux.Vars(r)
//Verifico si existe y retorno el valor en json o doy un error NotFound
if _, ok := Sample[vars["ID"]]; ok {
//Codifico el registro en json
salidaJson, _ := json.Marshal(Sample[vars["ID"]])
//Inidico que los datos devueltos van en json
w.Header().Set("Content-Type", "application/json")
w.Write(salidaJson)
} else {
http.Error(w, "StatusNotFound", http.StatusNotFound)
}
}
Con la linea de código mux.Vars(r) obtenemos todos los parámetros definidos en la ruta por lo cual podemos obtener el id indicado en /personas/3
En el siguiente repositorio de GitHub se tienen la APIRest completa <link>, el resto del código es fácil de interpretar por eso no lo escribo todo acá, puesto que es para que sea como una referencia mínima al como codificar la API
Pingback: API RESTful – Otro Del Montón
Pingback: sildenafil nz buy
Pingback: average cost sildenafil 20mg
Pingback: sildenafil generic india
Pingback: asda pharmacy ventolin
Pingback: brand cialis for sale
Pingback: cialis uk supplier
Pingback: how to buy viagra
Pingback: tadalafil 5 mg goodrx
Pingback: genuine viagra online
Pingback: alldaychemist tadalafil
Pingback: viagra medicine online
Pingback: custom essays cheap
Pingback: essays about community service
Pingback: what is a good essay writing service
Pingback: professional college application essay writers
Pingback: cheap essay papers
Pingback: essay on helping poor people
Pingback: tadalafil price at walmart
Pingback: viagra generic europe
Pingback: female viagra pills
Pingback: tadalafil best price 20 mg
Pingback: glucophage china
Pingback: furosemide kaliumsparend
Pingback: zdravilo rybelsus
Pingback: how fast does cephalexin work for uti
Pingback: spiraldynamics
Pingback: porn
Pingback: child porn
Pingback: porn
Pingback: Spiral Dynamics
Pingback: vxi.su
Pingback: porno izle
Pingback: augmentin for bronchitis
Pingback: allopurinol (zyloprim)
Pingback: site
Pingback: side effects of augmentin 875 mg
Pingback: celecoxib contraindications ati
Pingback: celebrex for fibromyalgia
Pingback: porn
Pingback: amitriptyline for cats urination
Pingback: is robaxin a muscle relaxer
Pingback: what is the alternative to voltaren
Pingback: grandpashabet
Pingback: child porn
Pingback: child porn
Pingback: child porn
Pingback: sex historie
Pingback: ivermectin human
Pingback: animal porn
Pingback: ananın amı
Pingback: child porn
Pingback: child porn
Pingback: lyrica generic
Pingback: porn
Pingback: Cocuk pornosu
Pingback: child porn
Pingback: child porn
Pingback: porn
Pingback: fuck
Pingback: anal porno
Pingback: child porn
Pingback: sex
Pingback: spam
Pingback: porn
Pingback: porn
Pingback: porno izle
Pingback: child porn
Pingback: iporn
Pingback: porn
Pingback: porn
Pingback: meritking
Pingback: spam