2016-01-29 172 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一樣的是,隨着郵差斜線進入它,它應該像預期。