询问Golang问题是否来自Ruby& JS世界,如果这是一个相当简单的Go问题,请耐心等待:)
在API上使用Gorilla toolkit,我不确定我的想法是否完全正确。我一直在阅读非常优秀的The Go Programming Language,但我现在还不是Go的专家。当发回JSON响应时,我已经做了类似下面的事情来发回这样的对象:
{ "healthy": true, "version": "0.0.1" }
但是我不确定这是一种最佳做法还是惯用法来创建像appHealth
这样的一次性结构,或者我是否想得太多,就像我想的那样在JS中,我只是抛出一个对象文字并将其JSON-ified版本返回给客户端。教我明智的地鼠。
谢谢!
package main
import (
"encoding/json"
"log"
"net/http"
"os"
"github.com/gorilla/mux"
)
type appHealth struct {
Healthy bool
Version string
}
func health(w http.ResponseWriter, r *http.Request) {
health := appHealth{true, "0.0.1"}
json.NewEncoder(w).Encode(health)
}
func main() {
port := os.Getenv("PORT")
router := mux.NewRouter().StrictSlash(false)
router.HandleFunc("/health", health)
log.Fatal(http.ListenAndServe(":"+port, router))
}
答案 0 :(得分:1)
看起来很不错。不要害怕为其增加意义。
type Version string
然后,您可以拥有与类型
相关联的版本的逻辑或者您可能想查看juju's version package。
如果你真的有一个结构,你可以用文字做一个匿名结构。
health := struct{
Health bool
Version string
}{
true,
"1.2.3",
}