为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Gobot.io 和 sleepy RESTful Framework for Go

使用 Gobot.io 和 sleepy RESTful Framework for Go

Go
慕田峪7331174 2021-09-27 10:45:03
我有以下代码,其中我使用了 Go 的 RESTful 框架,称为sleepy。我可以在以下位置成功启动服务:http://localhost:3000,但是当我尝试访问http://localhost:3000/temperature 时,我希望我的SparkCore函数dht能够执行。我正在使用Gobot.io Spark 平台基于这个例子来执行这个函数,我已经在我自己的代码中实现了它。问题是代码没有gobot.Start()通过Get()函数内部的方法,所以我实际上无法返回result数据。我正在设置data价值,希望我能做到:return 200, data, http.Header{"Content-type": {"application/json"}}但它永远不会被调用,因为gobot.Start().我对 Go 很陌生,所以任何帮助将不胜感激。package mainimport (    "net/url"    "net/http"    "fmt"    "github.com/dougblack/sleepy"    "github.com/hybridgroup/gobot"    "github.com/hybridgroup/gobot/platforms/spark")var gbot = gobot.NewGobot()var sparkCore = spark.NewSparkCoreAdaptor("spark", "device_id", "auth_token")type Temperature struct {}func (temperature Temperature) Get(values url.Values, headers http.Header) (int, interface{}, http.Header) {    work := func() {        if result, err := sparkCore.Function("dht", ""); err != nil {            fmt.Println(err)        } else {            data := map[string]string{"Temperature": result}            fmt.Println("result from \"dht\":", result)        }    }    robot := gobot.NewRobot("spark",        []gobot.Connection{sparkCore},        work,    )    gbot.AddRobot(robot)    gbot.Start()    return 200, data, http.Header{"Content-type": {"application/json"}}}func main() {    api := sleepy.NewAPI()    temperatureResource := new(Temperature)    api.AddResource(temperatureResource, "/temperature")    fmt.Println("Listening on http://localhost:3000/")    api.Start(3000)}
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

gbot.Start() 是阻塞调用。

在这种情况下,您应该将其称为:

go gbot.Start()

这将在 goroutine(想想线程)中启动它,然后让您的应用程序继续运行。

当您查看gobot 示例 app 时,它们不会在后台运行,因为它是主要功能。如果 main 在后台运行所有内容并且不等待任何内容,则应用程序会立即退出而没有明显效果。


查看完整回答
反对 回复 2021-09-27
  • 1 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信