【01-介紹】構建go web架構

來源:互聯網
上載者:User

介紹

通過教程,可以學習並實踐使用golang構建自己的web架構。
對於REST API開發學習更加有協助。

Martini 自發布起就迅速成為最受歡迎的golang web 架構,但是它並不是盡善盡美的,Martini 作者說它效率低並且設計思想並不完美,對於初學者來說並不太好。儘管如此,因為它的上手簡單使用方便還是有一大批使用者在使用。

目前為止,完成web應用都是使用基礎的庫,所以我的文章也是是用基礎的庫重頭來搭建web架構。對於golang新手和老司機來說這都是最好的web實踐。

在教程完成後,相信搭建會對web開發有很好的理解並得到實踐經驗,並且會針對不同的實際問題,在web 架構中去試下解決方案。

什麼是web架構?
目前有兩種類型的web架構,一種是全面形的,內建了所有的模組功能,能讓你快速開始你的業務代碼。比如golang的Beego 和 Revel。
還有一種是是僅提供路由和少數內建功能的架構,他需要你自己完成如orm等額外的功能模組,具有高度的定製靈活性,大多的web架構都屬於這一種類型,如martini,Goji, Gin, gocraft/web 等。

架構和庫的區別
到底是用架構還是用庫呢?我並不反對用現成的架構,但是go提供了優秀的包讓我們輕鬆實現自己的架構。如果需要開始一個長期的項目,那麼自己來實現架構是很好的選擇。如果你剛學習golang 那麼這樣做也有助於理解golang web架構的運行原理。

本文實現的架構套件含了的功能
本教程旨在實現定製化的輕量級架構實現,而非Beego這類全能型架構。
一個架構有3個部分
路由 — 收到請求後遞交給一個handler
中介軟體 — 在請求之前或者之後完成一些重複的功能
handler — 處理請求,返迴響應

中介軟體 handler:

  • Error/panic
  • logging
  • security
  • sessions
  • cookies
  • Body parsing

Golang Web 架構現狀
The problem with many Go web frameworks is that these components are made for one and only one framework. They are not inter-changeable. Yes you have just routers, or just middleware systems, or just middlewares and you might use them together if they're compatible with each other. But it's a very small minority of projects and it doesn't have enough visibility except for Gorilla which has still far less followers on Github than most other frameworks.

Go doesn't have a unified convention to handle middlewares like in Ruby (Rack), Node.js (Connect.js), Clojure (Ring) and other languages. Negroni, Goji, Gin, gocraft/web, etc, are all redefining how handlers and middlewares work. It's hard to re-use open-sourced middlewares, and it's hard to understand what are the best practices for a new developer.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.