小编Pip*_*pin的帖子

如何减少golang中重复的http处理程序代码?

我正在用 Go 设计一个 API 服务器。我有很多数据库表,每个表都有一个匹配的struct. 每个都有一个路线和处理程序:

type Thing1 struct {
   ID int64
   Name string
   ...
}

func main() {
    ...
    router := mux.NewRouter()
    apiRouter := router.PathPrefix("/v1").Subrouter()
    apiRouter.HandleFunc("/thing1/{id}", Thing1ShowHandler).Methods("GET")
}

func Thing1ShowHandler(w http.ResponseWriter, r *http.Request) {
    vars := mux.Vars(r)

    id, err := strconv.ParseInt(vars["id"], 10, 64)
    if err != nil {
        errorHandler(w, err)
        return
    }
    thing1 := Thing1{ID: id}
    err = db.First(&thing1, id).Error
    if thing1.ID > 0 {
        jsonHeaders(w, http.StatusOK)
        if err := json.NewEncoder(w).Encode(thing1); err != nil {
            errorHandler(w, err) …
Run Code Online (Sandbox Code Playgroud)

go

4
推荐指数
1
解决办法
865
查看次数

标签 统计

go ×1