Как легко отправить коды ошибок HTTP с помощью Golang и Gin Gonic
Go – очень популярный язык по понятной причине. Это простой язык с такой же производительностью, как и язык низкого уровня, например, C++. Всё больше разработчиков признают Golang.
Веб-платформа Gin использует пользовательскую версию HttpRouter, которая перемещается по вашим маршрутам API быстрее, чем большинство существующих платформ. Gin в 40 раз быстрее, чем Martini.
При разработке API-интерфейсов вам может потребоваться способ обработки ошибок/исключений и возврата клиенту соответствующего кода ошибки HTTP и сообщения. Следующая схема позволяет очень легко справляться с такими ситуациями.
Диспетчер ответов
Диспетчера ответов выглядит следующим образом:
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, "; ")})
}
}
Описанный выше метод принимает контекст и структуру ответа, которая обобщает ответ.
Этот метод можно использовать для отправки клиентам различных кодов ошибок HTTP вместе с сообщениями об ошибках.
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-интерфейсов, это один из них. Но я предпочитаю делать так.