Инициализация сервера Go Gin в Google Cloud Functions - PullRequest
1 голос
/ 28 мая 2020

Я использую HTTP-сервер Gin в Google Cloud Functions, но не знаю, правильно ли я инициализирую сервер. Я новичок в Go, поэтому не знаю, правильно ли я это понимаю.

Итак, среда выполнения Google Cloud Functions Go (1.13.8 beta) ожидает функцию, реализующую type HandlerFunc интерфейс из net/http.

func HelloHTTP(w http.ResponseWriter, r *http.Request)

Итак, моя функция выглядит так:

func Hello(w http.ResponseWriter, r *http.Request) {
    router.ServeHTTP(w, r) // ServeHTTP conforms to the http.Handler interface (https://godoc.org/github.com/gin-gonic/gin#Engine.ServeHTTP)
}

И моя функция инициализации:

Используйте fun c init () для инициализации значений при запуске нового экземпляра вашей функции. Обратите внимание, что код в функции fun c init () запускается до того, как ваша функция получит свой первый запрос.

var router *gin.Engine
func init() {
    router := gin.Default()
    router.POST("/my/route", MyHandler)
    router.Run()
}

Все работает должным образом при развертывании, но я хочу знать, Я что-то упустил или могу ли я сделать это более правильно?

1 Ответ

1 голос
/ 09 июня 2020

"ДОБАВИТЬ комментарий: Из исходного кода я понимаю, что вы намеревались написать функцию HTTP, включив стороннюю Go - веб-платформу Gin. Я вижу, что вы следовали документации usin funct_int для инициализации функции. Как вы это подтвердили, функция работает должным образом.

Однако похоже, что реализованная вами зависимость не совпадает с лучшими практиками, предлагаемыми в документации Cloud Function . Функция Coud позволяет вам указывать зависимости в Go. Вы можете добавить источник Gin WebFramewok в GOPATH как стороннюю зависимость.

...