亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 julienschmidt httprouter 簡化重復錯誤處理

使用 julienschmidt httprouter 簡化重復錯誤處理

Go
慕桂英546537 2021-11-08 14:33:57
Golang.org 有一篇關于如何做到這一點的博文:http : //blog.golang.org/error-handling-and-go他們基本上制作了一種新類型type appHandler func(http.ResponseWriter, *http.Request) error它像這樣實現了 http.Handler 接口func (fn appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {    if err := fn(w, r); err != nil {        http.Error(w, err.Error(), 500)    }}有了這個,你就可以在你的 handleFunc 上返回錯誤,這很棒。但我使用的是 julienschmidt httprouter,它使用一個函數而不是一個實現 http.Handler 的接口。我喜歡使用這個路由器,因為它支持命名參數。如何在 httprouter.Handler 函數周圍包裝“東西”,以便我可以返回錯誤并返回其他東西?有沒有辦法做到這一點,以防止重復的錯誤處理?我找不到辦法。
查看完整描述

1 回答

?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

使用閉包:


type Handle func(http.ResponseWriter, *http.Request, Params)


type ErrHandle func(http.ResponseWriter, *http.Request, Params) error


func (eh ErrHandle) ToHandle() Handle {

    return func(w http.ResponseWriter, r *http.Request, p Params) {

        if err := eh(w, r, p); err != nil {

            http.Error(w, err.Error(), 500)

        }

    }

}


查看完整回答
反對 回復 2021-11-08
  • 1 回答
  • 0 關注
  • 214 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號