詳解Golang Iris框架的基本使用 - IT145.com
文章推薦指數: 80 %
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模板{{.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
延伸文章資訊
- 1請各位前輩推薦一下web framework支援websocket,可以一對 ...
https://github.com/go-siris/siris IRIS社群維護版 ... Codementor 則致力於透過一對一程式語言教學和提供實際的程式設計專案幫助工程師們解決問題及...
- 2web开发介绍、iris框架安装、HTTP请求和返回、Iris路由处理
Golang - 100天从新手到大师. Contribute to rubyhan1314/Golang-100-Days development by creating an account...
- 3《Iris 框架中文文档》 | Go 技术论坛
我们致力于为Golang / Go 语言开发者提供一个分享创造、结识伙伴、协同互助的中文论坛,由Golang / Go 语言爱好者维护 ... 号称宇宙最快的Iris Web 框架的中文文档翻译.
- 4iris mvc + xorm,Go Web站點開發。(含完整原始碼)
前言. 簡要說說開發一個go web站點,我們需要掌握哪些技能?準備哪些技術點? 1、web框架. 一個好的框架能提升你的開發效率,也有益於團隊合作。iris ...
- 5Go web系列iris框架的搭建 - CSDN博客
Go iris中文文档Go web iris从入门到入土Iris框架特性专注于高性能简单流畅 ... Goweb开发之Iris框架实战10年从业经验,具有多年的开发和教学经验,.