Golang笔记

goji 自定义错误函数,如404、500等

goji 自定义错误函数,如404、500等

package main

import (
    "encoding/json"
    "flag"
    "fmt"
    "net/http"

    "github.com/zenazn/goji"
    "github.com/zenazn/goji/web"
    "github.com/zenazn/goji/web/middleware"
)

func main() {
    goji.Get("/", Root)

    flag.Set("bind", ":8000")
    goji.Serve()
}

type Hello struct {
    Message string
}

func Root(c web.C, w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")

    i := 0
    if i == 0 {
        ErrorString(c, w, 500, "test 500")
        return
    }

    hello := &Hello{Message: "Hello, world"}

    encoder := json.NewEncoder(w)
    encoder.Encode(hello)
}

func ErrorString(c web.C, w http.ResponseWriter, code int, str string) {
    c.Env["err"] = str
    if code >= 500 {
        errStr := fmt.Sprintf("Internal Error (request ID: %s)", middleware.GetReqID(c))
        http.Error(w, errStr, code)
    } else {
        http.Error(w, str, code)
    }
}

运行访问url 输出:

Internal Error (request ID: Vostro-260/t0hR4pQ0Ld-000002)
本文网址: https://golangnote.com/topic/58.html (转载注明出处)
关于GolangNote:记录在工作中使用golang 遇到、面临的相关问题及解决方法。如果你在这里获得一些知识或信息,解决你的编程问题,请考虑捐赠给不幸的人或者你喜欢的慈善机构,除捐赠外,种植树木、志愿服务或减少排碳的行为也很有益处。如果你有任何问题可以在下面 留言
Be the first to comment!
Captcha image
Relative Articles