我有以下代碼,我正在使用RESTful框架的Go,叫做sleepy。使用Gobot.io和昏昏沉沉的RESTful Framework執行SparkCore函數
我可以成功啓動該服務:http://localhost:3000,但是當我嘗試訪問http://localhost:3000/temperature時,我期待我的SparkCore函數dht
執行。
我正在使用Gobot.io Spark platform來執行此功能,它基於我在自己的代碼中實現的this example。
問題是代碼沒有通過Get()
函數中的gobot.Start()
方法,所以我實際上不能返回result
數據。
我設置data
值希望我可以做:
return 200, data, http.Header{"Content-type": {"application/json"}}
但它從來沒有被調用監守的gobot.Start()
的。
我很新,所以任何幫助將不勝感激。
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 ...更新答案 – 2015-03-26 02:36:07