我正在嘗試編寫一個 Web 應(yīng)用程序并努力編寫干凈的代碼。我有一個用于處理傳入請求的控制器和所有控制器都將借用字段的基本控制器。這是我的基本控制器type Controller struct { Request *http.Request Response http.ResponseWriter // Reqeust language lang string // HTML parts Title string body string head string content string view string errors []string success []string}// And methods followed herefunc (self *Controller) renderHeadView() { .....和我的注冊控制器type Controller struct { base.Controller user *account}func (self *Controller) ServeHTTP(rw http.ResponseWriter, r *http.Request) { self.Title = "Sign Up" self.Request = r self.Response = rw self.lang = header.Language(self.Request) self.user = &account{lang: self.lang} switch self.Request.Method { case "GET": self.get() case "POST": if err := self.post(); err != nil { self.get() } else { // If everything was successfully return } } self.RenderResponseView()}和我的激活控制器type Controller struct { base.Controller}func (self *Controller) ServeHTTP(rw http.ResponseWriter, r *http.Request) { self.Title = "Activate account" self.Request = r self.Response = rw self.lang = header.Language(self.Request) self.RenderResponseView()}如您所見,ServeHTTP 方法看起來幾乎相同。我正在考慮將 ServeHTTP 移動到基本控制器中,然后提供一種調(diào)用特殊工作的方法。為了澄清我的意思,請查看以下代碼片段(基本控制器)func (self *Controller) ServeHTTP(rw http.ResponseWriter, r *http.Request) { self.Title = "Activate account" self.Request = r self.Response = rw self.lang = header.Language(self.Request) // here would come function for special work function() self.RenderResponseView()}我不知道如何提供這個實現(xiàn)。如果有人能給我一些建議,我會很高興。
- 1 回答
- 0 關(guān)注
- 233 瀏覽
添加回答
舉報
0/150
提交
取消