gpt4 book ai didi

rest - gin-gonic 无法分配请求的地址

转载 作者:IT王子 更新时间:2023-10-29 01:53:48 26 4
gpt4 key购买 nike

所以我目前正在使用 gin-gonic 包在 go 中构建一个 restful api。我希望将代码部署到谷歌云平台计算引擎 VM。当我在我的本地机器上运行代码时,它使用本地主机工作,但是当在指定外部 IP 的实际 VM 实例上运行它时,我收到 TCP 连接的绑定(bind)错误。任何帮助表示赞赏。

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

最佳答案

你只能监听localhost,然后通过你主机的ip访问,比如35.237.89.107:8080

使用

r.Run(":8080")

0.0.0.0 不是必需的。

关于rest - gin-gonic 无法分配请求的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53054670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com