gpt4 book ai didi

rest - 使用 Gobot.io 和 sleepy RESTful Framework for Go 执行 SparkCore 函数

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

我有以下代码,我在其中使用了名为 sleepy 的 Go RESTful 框架。 .

我可以在以下位置成功启动服务:http://localhost:3000 ,但是当我尝试访问 http://localhost:3000/temperature 时我在等我的 SparkCore函数 dht 执行。

我正在使用 Gobot.io Spark platform根据 this example 执行此功能,我已经在自己的代码中实现了。

问题是代码没有通过 Get() 函数中的 gobot.Start() 方法,所以我实际上无法返回 结果数据。

我正在设置 data 值,希望我能做到:

return 200, data, http.Header{"Content-type": {"application/json"}}

但它永远不会被调用,因为 gobot.Start()

我是 Go 的新手,所以非常感谢任何帮助。

package main

import (
"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)
}

最佳答案

gbot.Start() 是一个阻塞调用。

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

go gbot.Start() 

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

当您查看 gobot example app ,它们不会在后台运行,因为它是主要功能。如果 main 在后台运行所有内容并且不等待任何内容,则应用会立即退出,不会产生任何明显影响。

关于rest - 使用 Gobot.io 和 sleepy RESTful Framework for Go 执行 SparkCore 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29247254/

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