首页 > 解决方案 > golang gorilla/mux 和 rest GET 问题

问题描述

我的删除处理程序:(我正在使用“github.com/gorilla/mux”)

func DeletePerson(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
item := params["id"]
fmt.Println("Item = ", item)
...

由以下 curl 命令调用时返回 Item = "2":

curl -X DELETE http://localhost:8000/address/2

但是,我的测试代码:

func TestDeletePerson(t *testing.T) {
person := &Person{
    UniqID:    "2",
    FirstName: "",
    LastName:  "",
    EmailAddr: "",
    PhoneNumb: "",
}

jsonPerson, _ := json.Marshal(person)
request, _ := http.NewRequest("DELETE", "/address/2", bytes.NewBuffer(jsonPerson))

response := httptest.NewRecorder()
DeletePerson(response, request)

结果 DeletePerson 返回“”并直接打印“params”返回

map[]

大问题 - 我到底想念什么???

我设置了另一个标题参数吗?

标签: restgo

解决方案


因为你没有初始化路由器。尝试这个

func TestDeletePerson(t *testing.T) {
    r := mux.NewRouter()
    r.HandleFunc("/adress/{id}", DeletePerson).Methods("DELETE")
    request, _ := http.NewRequest("DELETE", "/adress/2", nil)

    response := httptest.NewRecorder()
    r.ServeHTTP(response, request)
}

另外我认为您不需要发送 Person 对象进行删除


推荐阅读