使用 Gobot.io 和 sleepy RESTful Framework for Go 执行 SparkCore 函数
Execute SparkCore function using Gobot.io and sleepy RESTful Framework for Go
我有以下代码,我在其中使用名为 sleepy.
的 RESTful Go 框架
我可以成功启动服务:http://localhost:3000, however when I try to access http://localhost:3000/temperature I'm expecting my SparkCore函数dht
执行。
我正在使用我在自己的代码中实现的 Gobot.io Spark platform to execute this function based on this example。
问题是代码没有通过 Get()
函数中的 gobot.Start()
方法,所以我实际上无法 return result
数据。
我正在设置 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 运行 一切都在后台并且不等待任何东西,应用程序会立即退出,没有明显的影响。
我有以下代码,我在其中使用名为 sleepy.
的 RESTful Go 框架我可以成功启动服务:http://localhost:3000, however when I try to access http://localhost:3000/temperature I'm expecting my SparkCore函数dht
执行。
我正在使用我在自己的代码中实现的 Gobot.io Spark platform to execute this function based on this example。
问题是代码没有通过 Get()
函数中的 gobot.Start()
方法,所以我实际上无法 return result
数据。
我正在设置 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 运行 一切都在后台并且不等待任何东西,应用程序会立即退出,没有明显的影响。