gweb總結之開篇

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
gweb並不是一個web架構,而是自己整理的web腳手架?也不知道怎麼稱呼更為合適,因此主要目的在於總結相關知識。其中用到了的第三方的包,可以在項目的 vendor檔案夾裡查閱。我也希望做成一個web架構,一邊總結一邊朝著這個方向邁進吧。

項目背景

最開始我一直都在用Python在寫web服務,至於python寫代碼是種什麼體驗,大家各有體會,當你習慣了使用python的表單解析校正方式,再使用Golang來進行同樣的操作,對於剛開始接觸Golang的程式猿來說,簡直從天堂掉到了地獄。當然前提是,優雅的進行表單校正。而不是像下面的例子:

func Foo(w http.ResponseWriter req *http.Request) {    req.ParseForm()    bar := req.FormValue("bar")    if bar == "" {        // do some work        io.WriteString(w, "param invalid")    }}

上面只是簡單舉個例子(手寫代碼,有錯請原諒)。

所以我們想要的是:只需要寫商務邏輯,定義表單和響應體。其他的工作讓給另外的模組來統一處理。這裡貼出最終的效果:

// 定義表單type HelloGetForm struct {    Name string `schema:"name" valid:"Required" json:"name"`    Age  int    `schema:"age" valid:"Required;Min(18)" json:"age"`}var PoolHelloGetForm = &sync.Pool{New: func() interface{} { return &HelloGetForm{} }}// 定義響應體type HelloGetResp struct {    CodeInfo    Tip string `json:"tip"`}var PoolHelloGetResp = &sync.Pool{New: func() interface{} { return &HelloGetResp{} }}// 商務邏輯處理func HelloGet(req *HelloGetForm) *HelloGetResp {    resp := PoolHelloGetResp.Get().(*HelloGetResp)    defer PoolHelloGetResp.Put(resp)    resp.Tip = fmt.Sprintf("Get Hello, %s! your age[%d] is valid to access", req.Name, req.Age)    // TODO: sleep over 10 *time.Second, test Response TimeOut    time.Sleep(10 * time.Second)    Response(resp, NewCodeInfo(CodeOk, ""))    return resp}

正式開篇

先貼上來用法demo,其中包含了Restful API的Method,還有Json格式資料的解析以及檔案處理的樣本:

  1. Get
  2. Post
  3. Put
  4. Delete [暫時沒有樣本]
  5. JsonBody
  6. Files

後續

我會在最近放上gweb的各個模組如:

  • router/middleware/* & router/router 實現了統一解析,校正和響應的模組,也是最重要的部分
  • models 基本上就是orm的使用
  • mainC/servers Http Server & Rpc Server
  • controller 商務邏輯的的處理函數
  • logger 內建的web logger
  • sh/Makefile 通過Makefile來打包部署golang程式

歡迎fork

github.com/yeqown/gweb

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.