我正在尝试在 golang 中重写一个小的node-api,在那里我发现内部错误并没有停止请求的处理。有没有好的方法来结束处理?
我尝试过不同的方法,例如创建错误对象并使用panic(err)退出处理,但我认为还有更好的方法。
我期望有一个函数能够停止请求的处理并抛出 500 错误,并且可能会记录一两件事。
代码示例如下:
package main
import (
"fmt"
"net/http"
"strings"
)
func main() {
http.HandleFunc("/ping/", ping)
err := http.ListenAndServe(":8080", nil)
checkErr(err)
}
func ping(w http.ResponseWriter, req *http.Request) {
w.Write([]byte("pong\n"))
urlPath := req.URL.Path
rest := strings.TrimPrefix(urlPath, "/ping/")
testRest(w, rest)
}
func testRest(w http.ResponseWriter, rest string) {
if rest == "abc" {
http.Error(w, "The go-routine should stop here", 500)
}
fmt.Print("This shouldn't be printed")
}
func checkErr(err error) {
if err != nil {
panic(err)
}
}
我这样称呼它:
curl --url http://127.0.0.1:8080/ping/abc
肥皂起泡泡
ITMISS
相关分类