iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 29
2
Software Development

啥物碗Golang? 30天就Go系列 第 29

Iris

哇嗚,真不可思議,轉眼間時光飛逝已經倒數一天,明天就是完賽的日子。更多的感言還是留待明天吧(畢竟是傳統之一)。

今天我們要介紹的golang web framework是Iris,一個號稱地表上速度最快的框架。如果速度跟效能是你的第一考量,那似乎也沒什麼好猶豫的。不過github星星數排名第三,看來工程師除了速度外,也在意一些綜合原因。

這麼說也是再自然不過的,畢竟像是ruby能存活至今,正代表了「工具本身無分優劣,端看是應用在怎麼樣的場合」。不同的情境條件下,最佳的框架與語言自然也會不同。而吾輩的職責便是充分學習各種框架知識,才能應付不斷變化的戰場。有道是好的戰士不會只精通一樣武器,而像是金字塔型分佈,除了有一項主力以外,其他也必須要略懂才行。至少僅以rails工程師而言,近年來不自稱「全端」,對於前端js framework諸如React.js或是Vue.js等有些涉獵,要找工作的難度是相當高的呢。

話說回頭,Iris的狀況蠻特別的,根據跑分結果他確實是速度最快,但也有文章指出,跑分的結果不完全等同於現實的情況。這樣的說法我基本上可以理解,這邊並不是想要質疑數據造假的問題,而是跑分(Benchmark)充其量只能模擬壓力跟流量,與現實中真實的壓力當然會有落差,以及跑分的案例通常會有過於簡化的問題。

不然的話,根據資料顯示,Iris簡直是最「完美」的golang框架了,不只速度最快,支援功能最多最多學習資源等等優點。但有趣的是,Iris也是我唯一看到有「黑粉」的框架,有一批人反推Iris,認為它速度雖快但用起來不方便等等。我想光是速度一項優點,就值得我們對他有點基礎的了解,所以我們就來看看Iris的魅力!

安裝

老樣子,使用go get安裝:

go get -u github.com/kataras/iris

沒有什麼意外與驚喜。

Hello World

Iris提供的範例相對之下還蠻完整的,一口氣提供了許多內容。我們直接看範例:

package main

import "github.com/kataras/iris"

func main() {
	app := iris.Default()

	// Method:   GET
	// Resource: http://localhost:3000/
	app.Handle("GET", "/", func(ctx iris.Context) {
		ctx.HTML("<h1>Hello world!</h1>")
	})

	// same as app.Handle("GET", "/ping", [...])
	// Method:   GET
	// Resource: http://localhost:3000/ping
	app.Get("/ping", func(ctx iris.Context) {
		ctx.WriteString("pong")
	})

	// Method:   GET
	// Resource: http://localhost:3000/hello
	app.Get("/hello", func(ctx iris.Context) {
		ctx.JSON(iris.Map{"message": "Hello iris web framework."})
	})

	// http://localhost:3000
	// http://localhost:3000/ping
	// http://localhost:3000/hello
	app.Run(iris.Addr(":3000"))
}

範例一口氣提供三個路由,前兩個差異不大,只是寫為Html或是String的差別。第三個是回傳json格式,作為API的示範。

如果想看更多範例,可以參考官方整理的iris example,希望大家都能選擇順手的框架,開發順利囉!

Reference


上一篇
BeeGo
下一篇
Keep Going 三十天Golang挑戰回顧
系列文
啥物碗Golang? 30天就Go30

尚未有邦友留言

立即登入留言