3
我在Go设计一个API服务器。我有许多数据库表,每个表都有一个匹配的struct
。每个人都有一个路由和处理程序:如何减少golang中重复的http处理程序代码?
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)
}
return
}
notFoundHandler(w, r)
}
为Thing2
的代码几乎是相同的,因为它是为Thing3
等等。我最终会得到成百上千的东西,因此很多重复的代码。感觉我正在做一些可怕的错误。什么是使这个更干的最好方法?
谢谢!我会试一试。 – Pippin