2016-01-29 131 views
0

Go非常新,事实上从今天开始。但遇到了一个奇怪而令人沮丧的问题。简而言之,当我通过POSTMAN发出POST请求时,以下代码将r.Method打印为GET。Go http请求检测POST为GET

package main 

import (
    "fmt" 
    "net/http" 
    "routes" 
) 

func cartHandler(w http.ResponseWriter, r *http.Request) { 
    fmt.Printf(r.Method); 
    if r.Method == "GET" { 
     cart.GetHandler(w,r) 
    } else if r.Method == "POST" { 
     cart.PostHandler(w,r) 
    } 
    //fmt.Fprintf(w, "Hi there, I love %s!", r.Method) 
} 

func main() { 
    http.HandleFunc("/cart/", cartHandler) 
    http.ListenAndServe(":8010", nil) 
} 

正在发出的请求没有问题,因为nodejs中的一段代码将其检测为POST请求。

+0

谢谢Riscie,curl -X POST也为我工作。但是,POSTMAN应该也能工作,不知道你是否使用它,但我觉得它非常方便。 –

+0

所以我只用POSTMAN(铬扩展)测试它,它检测到我的POST为POST,GET为GET。不知道哪里出了问题... – Riscie

+1

我想我知道这里错了什么。您是否将完整的网址输入POSTMAN?包括最后一个斜线?因为如果我不输入最后一个斜杠,我的POST被发现为GET ... – Riscie

回答

3

在你HandleFunc删除最后结尾的斜线

http.HandleFunc("/cart", cartHandler) 

,而不是

http.HandleFunc("/cart/", cartHandler) 

或者,如果你希望你的URL一样的是,随着邮差斜线进入它,它应该像预期。