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