Так что в настоящее время я работаю над созданием успокоительного API в го с использованием пакета gin-gonic. Я надеюсь развернуть код на виртуальной машине с облачной платформой Google. Когда я запускаю код на своем локальном компьютере, он работает с использованием локального хоста, но при запуске его на реальном экземпляре виртуальной машины с указанным внешним IP-адресом я получаю сообщение об ошибке связывания с TCP-соединением. Любая помощь приветствуется.
server.go
package main
import (
"encoding/json"
"io/ioutil"
"net/http"
"os"
"github.com/gin-gonic/gin"
)
type headlines struct {
Author string
Title string
Description string
Url string
UrlToImage string
PublishedAt string
Content string
}
type NewsResponse struct {
Status string
TotalResults int
Articles []headlines
}
func GetSourceHeadlines(source string) NewsResponse {
newsAPIKey := os.Getenv("NEWS_API_KEY")
var newsResponse NewsResponse
resp, err := http.Get("https://newsapi.org/v2/top-headlines?sources=" + source + "&apiKey=" + newsAPIKey)
if err != nil {
panic(err)
}
defer resp.Body.Close()
if resp.StatusCode == http.StatusOK {
bodyBytes, _ := ioutil.ReadAll(resp.Body)
err := json.Unmarshal(bodyBytes, &newsResponse)
if err == nil {
return newsResponse
}
}
return newsResponse
}
func main() {
r := gin.Default()
r.GET("/headlines/ign", func(c *gin.Context) {
c.JSON(http.StatusOK, GetSourceHeadlines("ign"))
})
r.GET("/headlines/polygon", func(c *gin.Context) {
c.JSON(http.StatusOK, GetSourceHeadlines("polygon"))
})
r.GET("/headlines/techcrunch", func(c *gin.Context) {
c.JSON(http.StatusOK, GetSourceHeadlines("techcrunch"))
})
r.GET("/headlines/hacker-news", func(c *gin.Context) {
c.JSON(http.StatusOK, GetSourceHeadlines("hacker-news"))
})
r.Run("35.237.89.107:8080")
}
Консоль
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env: export GIN_MODE=release
- using code: gin.SetMode(gin.ReleaseMode)
[GIN-debug] GET /headlines/ign --> main.main.func1 (3 handlers)
[GIN-debug] GET /headlines/polygon --> main.main.func2 (3 handlers)
[GIN-debug] GET /headlines/techcrunch --> main.main.func3 (3 handlers)
[GIN-debug] Listening and serving HTTP on 35.237.89.107:8080
[GIN-debug] [ERROR] listen tcp 35.237.89.107:8080: bind: cannot assign requested address