小编Luc*_*a R的帖子

在 go 中停止处理 http 请求

我正在尝试在 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 { …
Run Code Online (Sandbox Code Playgroud)

rest go

2
推荐指数
1
解决办法
1876
查看次数

标签 统计

go ×1

rest ×1