今天開始要用到別人的程式了,
別人的程式就是比較讚。
Go語言在github上有許多的網頁框架:
每個有各自的效能評比,
今天就來介紹主流的網頁框架gin。
這是gin? 我看著倒像檸檬海水
golang安裝套件方法分成很多種,以下介紹其中兩種
透過go get
指令來安裝到GOPATH
底下,讓所有的專案都可以用gin套件。
$ go get -u github.com/gin-gonic/gin
透過昨天提到的glide工具來下載vendor
資料夾到專案底下,只有該專案能使用gin套件。
在GOPATH(go/src)
中,在專案底下 創建glide.yaml檔案
package: .
import:
- package: github.com/gin-gonic/gin
version: ~1.3.0
在專案底下 放gin1.go程式
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
}
接著在專案底下執行glide命令
$ glide install
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
router := gin.Default()
router.GET("/test", test)
router.Run(":80")
}
func test(c *gin.Context) {
str := []byte("ok") // 對於[]byte感到疑惑嗎? 因為網頁傳輸沒有string的概念,都是要轉成byte字節方式進行傳輸
c.Data(http.StatusOK, "text/plain", str) // 指定contentType為 text/plain,就是傳輸格式為純文字啦~
}
先確定80 port
沒有被任何程式佔據,否則會出現
listen tcp :80: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
的錯誤。
執行程式後,用瀏覽器打開127.0.0.1/test
(本地主機localhost),成功的話能看到以下畫面
回頭看看程式端,方便的地方在於可以:
由於是開啟/test
這個URI,如果Client端訪問根目錄/
的話會出現404 page not found
就是集大成,讓程式設計師能更快速方便開發網站的一套工具。
其實我們也可以用golang內建原生的函式來達成剛剛的範例的輸出。
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/test", test)
http.ListenAndServe(":80", nil)
// 傾聽 TCP 80 port及 處理服務
}
func test(writer http.ResponseWriter, request *http.Request) {
// 把字串寫回writer
str := []byte("ok")
writer.Write(str)
// 或者直接用以下這行
fmt.Fprintf(writer, "ok")
}
Golang很好用拔!我們透過net/http
官方的套件 以TCP/IP方法來傾聽80 port,
一樣可以跑、得到一樣的結果,而且不用安裝gin套件。
但就沒有那麼方便的儀板表可以來看Client訪問端的資料了。
目前這個小小程式,還感受不到網頁框架的威力。
敬請期待明天的gin