En este capítulo, presentaremos la programación web go y Json para crear un servicio web API con tipos de datos de respuesta en forma de API.
package main import "encoding/json" import "net/http" import "fmt" type student struct { ID string Name string Grade int } var data = []student{ student{"E001", "ethan", 21}, student{"W001", "wick", 22}, student{"B001", "bourne", 23}, student{"B002", "bond", 23}, }
La estructura de estudiante anterior se utiliza como tipo de elemento de segmento de datos de muestra, almacenado en la variable de datos.
A continuación, cree una función user() para manejar el punto final /users. En esta función hay un proceso de detección del tipo de solicitud a través de la propiedad r.Method(), para saber si el tipo de solicitud es Publicar, Obtener o algo más.
func users(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method == "GET" { var result, err = json.Marshal(data) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } w.Write(result) return } http.Error(w, "", http.StatusBadRequest) }
Si la solicitud es un GET (recuperar datos), entonces los datos se codifican en JSON
utilizado como respuesta.
La declaración w.Header().Set("Content-Type", "application/json") se utiliza para
determine el tipo de respuesta, es decir, como JSON. Mientras r.Write()
utilizado para registrar datos como respuesta.
De lo contrario, si la solicitud no es válida, la respuesta se establece como error usando
Función http.Error().
También configure un controlador para el punto final /user. La diferencia entre este punto final y
/usuarios arriba es:
El punto final /users devuelve todos los datos de muestra existentes (matriz).
El punto final /user devuelve solo un dato, tomado de los datos
muestra basada en su ID. En este punto final, el cliente debe enviar
también la información de identificación de los datos que se buscan
func user(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method == "GET" { var id = r.FormValue("id") var result []byte var err error for _, each := range data { if each.ID == id { result, err = json.Marshal(each) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } w.Write(result) return } } http.Error(w, "User not found", http.StatusNotFound) return } http.Error(w, "", http.StatusBadRequest) }
El método r.FormValue() se utiliza para recuperar datos del formulario enviados desde
cliente, en este contexto el dato al que se refiere es DNI.
Con este ID se buscan datos relevantes. Si lo hay, entonces
devolvió como respuesta. Si no está allí, entonces se produce el error 400, Solicitud incorrecta
devuelto con el mensaje Usuario no encontrado.
Finalmente, implemente los dos controladores anteriores.
func main() { http.HandleFunc("/users", users) http.HandleFunc("/user", user) fmt.Println("starting web server at http://localhost:8080/") http.ListenAndServe(":8080", nil) }
Ejecute el programa, ahora el servidor web está activo y se pueden consumir los datos.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3