Go 使用Mux创建rest api(demo)

package main

import (
	"encoding/json"
	"io/ioutil"
	"net/http"

	"github.com/gorilla/mux"
)

func notFound(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-Type", "application/json")
	w.WriteHeader(http.StatusNotFound)
	w.Write([]byte(`{"message": "not found"}`))
}

/** GET    如/{name}/countries/{country}**/
func urlvarEX(writer http.ResponseWriter, request *http.Request) {
	vars := mux.Vars(request)
	name := vars["name"]
	country := vars["country"]
	var res = map[string]string{"result": "success", "name": name, "country": country}
	response, _ := json.Marshal(res)
	writer.Header().Set("Content-Type", "application/json")
	writer.Write(response)
}

/** GET  如/sayhello?name=jack**/
func pathEX(writer http.ResponseWriter, request *http.Request) {
	vars := request.URL.Query()
	param := vars["name"]
	var res = map[string]string{"result": "success", "name": param[0]}
	response, _ := json.Marshal(res)
	writer.Header().Set("Content-Type", "application/json")
	writer.Write(response)
}

/** POST 获取body **/
func bodyEx(writer http.ResponseWriter, request *http.Request) {
	var req map[string]interface{}
	body, _ := ioutil.ReadAll(request.Body)
	json.Unmarshal(body, &req)
	name := req["name"].(string)
	var res = map[string]string{"result": "success", "name": name}
	response, _ := json.Marshal(res)
	writer.Header().Set("Content-Type", "application/json")
	writer.WriteHeader(http.StatusOK)
	writer.Write(response)
}
func startServer() {
	r := mux.NewRouter()
	r.HandleFunc("/{name}/countries/{country}", urlvarEX).Methods(http.MethodGet)
	r.HandleFunc("/sayhello", pathEX).Methods(http.MethodGet)
	r.HandleFunc("/postSay", bodyEx).Methods(http.MethodPost)
	r.HandleFunc("/", notFound)
	http.ListenAndServe(":8080", r)
}

 

你可能感兴趣的:(Go 使用Mux创建rest api(demo))