詳解Golang Iris框架的基本使用 - IT145.com

文章推薦指數: 80 %
投票人數:10人

Iris是目前流行Golang框架中唯一提供MVC支援(實際上Iris使用MVC效能會略有下降)的 ... 依賴注入、MVC等的用法,可以參照官方教學使用,後期有時間會寫文章總結。

首頁 > 軟體 詳解GolangIris框架的基本使用 2020-11-2715:07:29 Iris介紹 編寫一次並在任何地方以最小的機器功率執行,如Android、ios、Linux和Windows等。

它支援GoogleGo,只需一個可執行的服務即可在所有平臺。

Iris以簡單而強大的api而聞名。

除了Iris為您提供的低階存取許可權。

Iris同樣擅長MVC。

它是唯一一個擁有MVC架構模式豐富支援的GoWeb框架,效能成本接近於零。

Iris為您提供構建面向服務的應用程式的結構。

用Iris構建微服務很容易。

1.Iris框架 1.1Golang框架   Golang常用框架有:Gin、Iris、Beego、Buffalo、Echo、Revel,其中Gin、Beego和Iris較為流行。

Iris是目前流行Golang框架中唯一提供MVC支援(實際上Iris使用MVC效能會略有下降)的框架,並且支援依賴注入,使用入門簡單,能夠快速構建Web後端,也是目前幾個框架中發展最快的,從2016年截止至目前總共有17.4kstars(Gin35Kstars)。

Irisisafast,simpleyetfullyfeaturedandveryefficientwebframeworkforGo.ItprovidesabeautifullyexpressiveandeasytousefoundationforyournextwebsiteorAPI. 1.2安裝Iris Iris官網:https://iris-go.com/ IrisGithub:https://github.com/kataras/iris #goget-u-v獲取包 gogetgithub.com/kataras/iris/[email protected] #可能提示@latest是錯誤,如果版本大於11,可以使用下面開啟GO111MODULE選項 #使用完最好關閉,否則編譯可能出錯 goenv-wGO111MODULE=on #goget失敗可以更改代理 goenv-wGOPROXY=https://goproxy.cn,direct 2.使用Iris構建伺服器端 2.1簡單例子1——直接返回訊息 packagemain import( "github.com/kataras/iris/v12" "github.com/kataras/iris/v12/middleware/logger" "github.com/kataras/iris/v12/middleware/recover" ) funcmain(){ app:=iris.New() app.Logger().SetLevel("debug") //設定recover從panics恢復,設定log記錄 app.Use(recover.New()) app.Use(logger.New()) app.Handle("GET","/",func(ctxiris.Context){ ctx.HTML("

HelloIris!

") }) app.Handle("GET","/getjson",func(ctxiris.Context){ ctx.JSON(iris.Map{"message":"yourmsg"}) }) app.Run(iris.Addr("localhost:8080")) } 其他便捷設定方法: //預設設定紀錄檔和panic處理 app:=iris.Default() 我們可以看到iris.Default()的原始碼: //注:預設設定"./view"為htmlviewengine目錄 funcDefault()*Application{ app:=New() app.Use(recover.New()) app.Use(requestLogger.New()) app.defaultMode=true returnapp } 2.2簡單例子2——使用HTML模板 packagemain import"github.com/kataras/iris/v12" funcmain(){ app:=iris.New() //註冊模板在work目錄的views資料夾 app.RegisterView(iris.HTML("./views",".html")) app.Get("/",func(ctxiris.Context){ //設定模板中"message"的引數值 ctx.ViewData("message","Helloworld!") //載入模板 ctx.View("hello.html") }) app.Run(iris.Addr("localhost:8080")) } 上述例子使用的hello.html模板 HelloPage

{{.message}}

2.3路由處理 上述例子中路由處理,可以使用下面簡單替換,分別針對HTTP中的各種方法 app.Get("/someGet",getting) app.Post("/somePost",posting) app.Put("/somePut",putting) app.Delete("/someDelete",deleting) app.Patch("/somePatch",patching) app.Head("/someHead",head) app.Options("/someOptions",options) 例如,使用路由「/hello」的Get路徑 app.Get("/hello",handlerHello) funchandlerHello(ctxiris.Context){ ctx.WriteString("Hello") } //等價於下面 app.Get("/hello",func(ctxiris.Context){ ctx.WriteString("Hello") }) 2.4使用中介軟體 app.Use(myMiddleware) funcmyMiddleware(ctxiris.Context){ ctx.Application().Logger().Infof("Runsbefore%s",ctx.Path()) ctx.Next() } 2.5使用檔案記錄紀錄檔  整個Application使用檔案記錄 上述記錄紀錄檔 //獲取當前時間 now:=time.Now().Format("20060102")+".log" //開啟檔案,如果不存在建立,如果存在追加檔案尾,許可權為:擁有者可讀可寫 file,err:=os.OpenFile(now,os.O_CREATE|os.O_APPEND,0600) deferfile.Close() iferr!=nil{ app.Logger().Errorf("Logfilenotfound") } //設定紀錄檔輸出為檔案 app.Logger().SetOutput(file) 到檔案可以和中介軟體結合,以控制不必要的偵錯資訊記錄到檔案 funcmyMiddleware(ctxiris.Context){ now:=time.Now().Format("20060102")+".log" file,err:=os.OpenFile(now,os.O_CREATE|os.O_APPEND,0600) deferfile.Close() iferr!=nil{ ctx.Application().Logger().SetOutput(file).Errorf("Logfilenotfound") os.Exit(-1) } ctx.Application().Logger().SetOutput(file).Infof("Runsbefore%s",ctx.Path()) ctx.Next() } 上述方法只能列印Statuscode為200的路由請求,如果想要列印其他狀態碼請求,需要另使用 app.OnErrorCode(iris.StatusNotFound,func(ctxiris.Context){ now:=time.Now().Format("20060102")+".log" file,err:=os.OpenFile(now,os.O_CREATE|os.O_APPEND,0600) deferfile.Close() iferr!=nil{ ctx.Application().Logger().SetOutput(file).Errorf("Logfilenotfound") os.Exit(-1) } ctx.Application().Logger().SetOutput(file).Infof("404") ctx.WriteString("404notfound") })   Iris有十分強大的路由處理程式,你能夠按照十分靈活的語法設定路由路徑,並且如果沒有涉及正規表示式,Iris會計算其需求預先編譯索引,用十分小的效能消耗來完成路由處理。

注:ctx.Params()和ctx.Values()是不同的,下面是官網給出的解釋: Pathparameter'svaluescanberetrievedfromctx.Params()Context'slocalstoragethatcanbeusedtocommunicatebetweenhandlersandmiddleware(s)canbestoredtoctx.Values(). Iris可以使用的引數型別 ParamType GoType Validation RetrieveHelper :string string anything(singlepathsegment) Params().Get :int int -9223372036854775808to9223372036854775807(x64)or-2147483648to2147483647(x32),dependsonthehostarch Params().GetInt :int8 int8 -128to127 Params().GetInt8 :int16 int16 -32768to32767 Params().GetInt16 :int32 int32 -2147483648to2147483647 Params().GetInt32 :int64 int64 -9223372036854775808to92233720368?4775807 Params().GetInt64 :uint uint 0to18446744073709551615(x64)or0to4294967295(x32),dependsonthehostarch Params().GetUint :uint8 uint8 0to255 Params().GetUint8 :uint16 uint16 0to65535 Params().GetUint16 :uint32 uint32 0to4294967295 Params().GetUint32 :uint64 uint64 0to18446744073709551615 Params().GetUint64 :bool bool 「1」or「t」or「T」or「TRUE」or「true」or「True」or「0」or「f」or「F」or「FALSE」or「false」or「False」 Params().GetBool :alphabetical string lowercaseoruppercaseletters Params().Get :file string lowercaseoruppercaseletters,numbers,underscore(_),dash(-),point(.)andnospacesorotherspecialcharactersthatarenotvalidforfilenames Params().Get :path string anything,canbeseparatedbyslashes(pathsegments)butshouldbethelastpartoftheroutepath Params().Get 在路徑中使用引數 app.Get("/users/{id:uint64}",func(ctxiris.Context){ id:=ctx.Params().GetUint64Default("id",0) }) 使用post傳遞引數 app.Post("/login",func(ctxiris.Context){ username:=ctx.FormValue("username") password:=ctx.FormValue("password") ctx.JSON(iris.Map{ "Username":username, "Password":password, }) }) 以上就是Iris的基本入門使用,當然還有更多其他操作:中介軟體使用、正規表示式路由路徑的使用、Cache、Cookie、Session、FileServer、依賴注入、MVC等的用法,可以參照官方教學使用,後期有時間會寫文章總結。

到此這篇關於詳解GolangIris框架的基本使用的文章就介紹到這了,更多相關GolangIris框架使用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com! 相關文章 英特爾:一失足成千古恨,再回頭已「百年身」 2021-05-1214:32:11 11歲男孩日充遊戲7千多元!家長稱實名存漏洞,騰訊退費 2021-05-1214:32:00 火龍果財經:ETH、BTC有什麼不同 2021-05-1214:31:57 誰更令你心動?合資品牌銷量支柱齊換代 2021-05-1214:31:30 蘋果iPhone13Pro被截胡,國產廠商搶先一步,庫克可能也沒料到 2021-05-1214:31:20 印度工廠現大規模感染,iPhone產量被砍半!富士康母公司連續3天大跌,近600億市值蒸發 2021-05-1214:31:19 熱門文章 1win10升級後無法調整螢幕解析度怎麼辦 2Win7/8.1/10/Office啟用工具使用教學(KMSpico) 3win10下【寬頻連線錯誤813】怎麼辦? 4Excel密碼破解:開啟密碼,保護密碼,VBA密碼 5如何更改AndroidStudio的程式碼字型和顏色 6EXCEL技巧——EXCEL如何製作族譜 7AdobePhotoshopCC官方中文版安裝破解教學 8如何使用PPT製作轉盤抽獎的動畫 9excel表格怎麼設定到期日前自動提醒功能 10如何在Photoshop中開啟並使用pat格式的檔案 IT145.comE-mail:sddin#qq.com


請為這篇文章評分?