Go是一门非常流行的语言,这是有原因的。它是一种简单的语言,具有与c++等语言一样好的性能。Golang在web开发中的接受度正以很高的速度增长。
Gin web框架使用了一个自定义版本的HttpRouter,它能比其他大多数框架更快地路由到你的API处理函数。Gin声称比Martini快40倍。
在为服务开发API时,您可能需要一种方法来处理错误/异常,并向客户端返回适当的HTTP错误码和错误信息。下面的方案使处理错误情况变得非常容易。
response调度程序
响应调度程序的实现如下所示:
type Response struct {
Status int
Message []string
Error []string
}
func SendResponse(c *gin.Context, response Response) {
if len(response.Message) > 0 {
c.JSON(response.Status, map[string]interface{}{"message": strings.Join(response.Message, "; ")})
} else if len(response.Error) > 0 {
c.JSON(response.Status, map[string]interface{}{"error": strings.Join(response.Error, "; ")})
}
}
上面的方法接受Context和Response结构体,实现通用的响应方式。此方法可用于向客户端发送各种HTTP错误码和错误消息。dispatcher的用法如下:
// 未授权访问
SendResponse(c, helpers.Response{Status: http.StatusUnauthorized, Error: []string{"Username and password do not match"}})
// 参数错误
SendResponse(c, helpers.Response{Status: http.StatusBadRequest, Error: []string{"One or more params are wrong"}})
总结:
有很多方式实现API发送错误响应,以上只是其中之一。每当我开始一个新项目,我更喜欢这样的方法,使的开发更轻松。