日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

go lris框架学习笔记

發布時間:2023/12/31 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 go lris框架学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

go語言除了原生http web框架,還有3個比較出名的框架,gin,beego,Iris

先創建項目

創建go.mod文件,管理各種包

打開命令行,下載iris包,go get github.com/kataras/iris/v12@master
記得配置goproxy,防止下載失敗

成功創建項目demo1
寫入以下代碼運行后,瀏覽器可以正常訪問。

package mainimport "github.com/kataras/iris/v12"func main() {app := iris.New() //開啟iris http服務app.Use(iris.Compression) //iris.Compression 是Iris內部對IO數據進行壓縮的模塊,可以提高數據傳輸速度。app.Get("/", func(ctx iris.Context) {ctx.HTML("Hello <strong>%s</strong>!", "World")})app.Listen(":8080") //監聽端口 }

Restful規范

定義一種接口的設計規范,但并不是必須用這個規范,根據實際場景來,不要墨守成規

表單傳參

app.Post("/user/login", func(c *context.Context) {//獲取表單的參數username := c.PostValue("username")password := c.PostValue("password")//控制臺輸出的日志app.Logger().Info(username + "--" + password)//對瀏覽器響應的內容c.WriteString(username + "--" + password)})

路徑傳參帶key

app.Get("/user", func(context *context.Context) {userId := context.URLParam("userId")userName := context.URLParam("userName")app.Logger().Info(userId + "--" + userName)context.WriteString(userId + "--" + userName)})

路徑傳參不帶key

//路徑傳參app.Get("/user/{userid:int64}/{username:string}", func(context *context.Context) {userid := context.Params().Get("userid")username := context.Params().Get("username")app.Logger().Info(userid + "--" + username)context.WriteString(userid + "--" + username)})

傳遞json

app.Post("user/json", func(context *context.Context) {//創建結構體,映射json字段,此處用匿名的,減少內存損耗,不匿名也可以var user1 = struct {Username string `json:"username"`Password string `json:"password"`}{}//讀json賦值給usererr := context.ReadJSON(&user1)if err != nil {panic(err)}app.Logger().Info(user1)//返回給瀏覽器json,iris.map是一個轉換json的方法context.JSON(iris.Map{"msg": user1.Username, "code": 200})})

路由組

類似前綴,關鍵詞Party,并且可以寫方法,類似init

頁面跳轉

目錄結構如下

代碼如下:

package mainimport ("github.com/kataras/iris/v12""github.com/kataras/iris/v12/context""net/http" )func main() {app := iris.New()app.Use(iris.Compression)//頁面渲染配置,從./view目錄下加載擴展名是.html的所有模板,將reload設置為true可以熱更新前端頁面app.RegisterView(iris.HTML("./view", ".html").Reload(true))//靜態資源目錄設置app.HandleDir("static", http.Dir("./static"))app.Get("/index", func(context *context.Context) {context.ViewData("msg", "hello,dada")context.View("index.html")})app.Run(iris.Addr(":8080")) }

錯誤頁面響應

//如果報404的處理邏輯app.OnErrorCode(iris.StatusNotFound, func(context *context.Context) {context.View("404.html")})

重定向

進入/index,如果login為false就重定向到login

app.Get("/index", func(context *context.Context) {context.ViewData("msg", "hello,dada")login := falseif login {fmt.Println("xxx")} else {//設置重定向狀態碼302給contextcontext.StatusCode(302)//設置重定向的地址,location為/logincontext.Header("location", "/login")}})app.Get("/login", func(context *context.Context) {context.View("login.html")})

中間件

訪問user之前或之后的操作,也可以指定為全局

package mainimport ("fmt""github.com/kataras/iris/v12""github.com/kataras/iris/v12/context" )func main() {app := iris.New()app.Use(iris.Compression)//全局的前置處理app.Use(befer)//全局的后置處理app.Use(after)app.Get("/user", user)//app.Get("/user",befer,user,after) 只針對user的前置,后置處理app.Listen(":8080")}func user(c *context.Context) {fmt.Println("user")c.Next() }func befer(c *context.Context) {c.Values().Set("msg", "hellodada")fmt.Println("befer")//繼續到下一個處理器,不寫的話,不會到下一個c.Next() }func after(c *context.Context) {fmt.Println("after")fmt.Println(c.Values().Get("msg"))c.Next() }

會話

以下代碼模擬會話,用戶登錄后,服務端給客戶端一個cookie,并且服務端有一個session,驗證通過后,可以正常登錄首頁,可以通過注銷或者消除會話方法進行退出。

package mainimport ("github.com/kataras/iris/v12""github.com/kataras/iris/v12/context""github.com/kataras/iris/v12/sessions" )// 創建會話 var (cookie = "sessonididid"session = sessions.New(sessions.Config{Cookie: cookie}) )func main() {app := iris.New()app.Use(iris.Compression)app.Get("/index", index)app.Get("/login", login)app.Get("/logout", logout)app.Get("/destroy", destroy)app.Listen(":8080") }// 登錄驗證 func login(c *context.Context) {//將c與seesion建立連接sessions := session.Start(c)//身份驗證邏輯判斷//驗證通過,給session賦值,truesessions.Set("authenticated", true) }// 首頁 func index(context *context.Context) {sessions := session.Start(context)//檢查是否通過登錄驗證boolean, _ := sessions.GetBoolean("authenticated")if boolean == false {//響應302context.StatusCode(iris.StatusForbidden)return}context.WriteString("用戶已經通過驗證")}// 銷毀會話 func destroy(c *context.Context) {//類似close,也可以起到注銷的效果session.Destroy(c) }// 注銷 func logout(c *context.Context) {sessions := session.Start(c)//將存的authenticated改為falsesessions.Set("authenticated", false)}

總結

以上是生活随笔為你收集整理的go lris框架学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。