Как легко отправить коды ошибок 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-интерфейсов, это один из них. Но я предпочитаю делать так.

Ответить