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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值