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)
}