私は、エラー処理がどのように行われなくてはならないかについて少し混乱しています。私はそれについて多くの記事を読んだことがありますが、それでも私のコード構造にそれらを適用することはできません。私は行くために新しいですので、助けてください。Go Httpエラー処理
主な2つのAPIを扱う機能があります:api1
とapi2
の両方でAPI1とAPI2
func main() {
http.HandleFunc("/offers", api1)
http.HandleFunc("/getOffersList", api2)
err := http.ListenAndServe(":8080", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
func api1(w http.ResponseWriter, req *http.Request) {
validateRequestHeader(w, req, "GET")
// code here....
}
func api2(w http.ResponseWriter, req *http.Request) {
validateRequestHeader(w, req, "POST")
//code here....
}
func validateRequestHeader(w http.ResponseWriter, req *http.Request, allowedMethod string) {
// allow cross domain AJAX requests
w.Header().Set("Content-Type", "application/json")
if origin := req.Header.Get("Origin"); origin != "" {
w.Header().Set("Access-Control-Allow-Origin", origin)
w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE")
w.Header().Set("Access-Control-Allow-Headers",
"Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization")
}
// Stop here if its Preflighted OPTIONS request
if req.Method == "OPTIONS" {
return
}
if req.Method != allowedMethod {
response := "Only " + allowedMethod + " requests are allowed"
http.Error(w, response, http.StatusMethodNotAllowed)
return
}
}
は、機能validateRequestHeader
が呼び出さなっています。これが真実ならば、api1/api2でさらにコードが実行されています。これは私が望まないものです。どのように処理する必要がありますか?
if req.Method != allowedMethod {
response := "Only " + allowedMethod + " requests are allowed"
http.Error(w, response, http.StatusMethodNotAllowed)
return
}
もし!検証し、次に – Warrior
@Warrior validateRequestHeader( "POST"、REQ、wは)質問は、私がhttp.Error(応答、http.StatusMethodNotAllowed、ワット) リターン '返すべきものである値 – Jagrati
として使用戻ります'here – Jagrati