当前位置: 首页 > wzjs >正文

做网站项目的心得网站优化要怎么做

做网站项目的心得,网站优化要怎么做,开发网站建设用什么框架,wordpress区块 宽度一、概述 在 Gin 框架中,中间件(Middleware)是一种在处理 HTTP 请求之前或之后执行的函数。使用中间件可以方便地实现诸如身份验证(Auth)、日志记录、请求限流等功能。 二、编写中间件 // 中间件 func StartCost1(c …

一、概述

        在 Gin 框架中,中间件(Middleware)是一种在处理 HTTP 请求之前或之后执行的函数。使用中间件可以方便地实现诸如身份验证(Auth)、日志记录、请求限流等功能。

二、编写中间件

// 中间件
func StartCost1(c *gin.Context) {log.Info("......start1......")start := time.Now()c.Next() //调用后续的处理函数// c.Abort() //阻止调用后续的处理函数cost := time.Since(start)log.Info("cost1:", cost)log.Info("......end1......")
}func StartCost2(c *gin.Context) {log.Info("......start2......")log.Info("......end2......")
}func authMiddleware(doCheck bool) gin.HandlerFunc {return func(ctx *gin.Context) {if doCheck {//检查用户信息ctx.Set("token", "20240814")// TODOlog.Info("检查用户登录信息")ctx.Next()} else {//不检查用户信息log.Error("不检查用户信息即可处理")ctx.Next()}}
}

三、使用中间件

func main() {r := gin.Default()r.Use(StartCost1, StartCost2, authMiddleware(true))r.LoadHTMLFiles("./index.html", "./home.html")r.GET("/web", func(c *gin.Context) {name := c.Query("query")c.JSON(http.StatusOK, gin.H{"name": name,})})r.GET("/login", func(ctx *gin.Context) {ctx.HTML(http.StatusOK, "index.html", nil)})r.GET("/home", func(ctx *gin.Context) {ctx.Request.URL.Path = "/b"r.HandleContext(ctx)})r.GET("/b", func(ctx *gin.Context) {log.Info("request /b GetLocalIP: " + GetLocalIP())ctx.Redirect(http.StatusMovedPermanently, GetLocalIP()+":9090/login")})r.POST("/login", func(ctx *gin.Context) {log.Info("request /login GetLocalIP: " + GetLocalIP())username := ctx.PostForm("username")password := ctx.PostForm("password")//从请求中获取携带的参数f, err := ctx.FormFile("file")if err != nil {ctx.JSON(http.StatusBadRequest, gin.H{"error": err,})} else {filePath := path.Join("./", f.Filename)ctx.SaveUploadedFile(f, filePath)ctx.HTML(http.StatusOK, "home.html", gin.H{"Name":     username,"Password": password,"Token":    ctx.GetString("token"),})}})r.Run(":9090")}

四、后端完整代码

package mainimport ("net""net/http""path""time""github.com/gin-gonic/gin"log "github.com/sirupsen/logrus"
)func GetLocalIP() string {ip := "127.0.0.1"addrs, err := net.InterfaceAddrs()if err != nil {return ip}for _, a := range addrs {if ipnet, ok := a.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {if ipnet.IP.To4() != nil {ip = ipnet.IP.String()break}}}return ip}// 中间件
func StartCost1(c *gin.Context) {log.Info("......start1......")start := time.Now()c.Next() //调用后续的处理函数// c.Abort() //阻止调用后续的处理函数cost := time.Since(start)log.Info("cost1:", cost)log.Info("......end1......")
}func StartCost2(c *gin.Context) {log.Info("......start2......")log.Info("......end2......")
}func authMiddleware(doCheck bool) gin.HandlerFunc {return func(ctx *gin.Context) {if doCheck {//检查用户信息ctx.Set("token", "20240814")// TODOlog.Info("检查用户登录信息")ctx.Next()} else {//不检查用户信息log.Error("不检查用户信息即可处理")ctx.Next()}}
}func main() {r := gin.Default()r.Use(StartCost1, StartCost2, authMiddleware(true))r.LoadHTMLFiles("./index.html", "./home.html")r.GET("/web", func(c *gin.Context) {name := c.Query("query")c.JSON(http.StatusOK, gin.H{"name": name,})})r.GET("/login", func(ctx *gin.Context) {ctx.HTML(http.StatusOK, "index.html", nil)})r.GET("/home", func(ctx *gin.Context) {ctx.Request.URL.Path = "/b"r.HandleContext(ctx)})r.GET("/b", func(ctx *gin.Context) {log.Info("request /b GetLocalIP: " + GetLocalIP())ctx.Redirect(http.StatusMovedPermanently, GetLocalIP()+":9090/login")})r.POST("/login", func(ctx *gin.Context) {log.Info("request /login GetLocalIP: " + GetLocalIP())username := ctx.PostForm("username")password := ctx.PostForm("password")//从请求中获取携带的参数f, err := ctx.FormFile("file")if err != nil {ctx.JSON(http.StatusBadRequest, gin.H{"error": err,})} else {filePath := path.Join("./", f.Filename)ctx.SaveUploadedFile(f, filePath)ctx.HTML(http.StatusOK, "home.html", gin.H{"Name":     username,"Password": password,"Token":    ctx.GetString("token"),})}})r.Run(":9090")}

五、前端页面

1、index.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Form</title>
</head><body><form action="/login" method="post" enctype="multipart/form-data"><div><label for="username">用户名:</label><input type="text" name="username" id="username" /></div><div><label for="password">密 码:</label><input type="text" name="password" id="password" /></div><div><label for="file">上传文件:</label><input type="file" name="file" id="file" /></div><div><input type="submit" value="提交"></div></form></body></html>

2、home.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>用户信息</title>
</head><body><h1> 您好,{{.Name}}</h1><span>密码:{{.Password}}</span><span>Token:{{.Token}}</span>
</body></html>

六、运行代码

go run main.go

七、展示


文章转载自:

http://438TOc7t.jqkrt.cn
http://vdTIBTTN.jqkrt.cn
http://xov4s3fq.jqkrt.cn
http://JJSsEeik.jqkrt.cn
http://6Bj0NzB1.jqkrt.cn
http://HOp3c8GT.jqkrt.cn
http://D9bzBFRT.jqkrt.cn
http://XuCedwI7.jqkrt.cn
http://oaNtfh8B.jqkrt.cn
http://TskaSdyR.jqkrt.cn
http://uGwVDIH0.jqkrt.cn
http://t4txcQUL.jqkrt.cn
http://ipQI2MxL.jqkrt.cn
http://uqAbeBne.jqkrt.cn
http://UzhW0kWh.jqkrt.cn
http://qHR4MONh.jqkrt.cn
http://fG8GJ33K.jqkrt.cn
http://VwaIyUUG.jqkrt.cn
http://nrMfEJvx.jqkrt.cn
http://3o6rQwqL.jqkrt.cn
http://a4SGsWoL.jqkrt.cn
http://QNLiHWK1.jqkrt.cn
http://KTS99mYh.jqkrt.cn
http://pK3VnYJE.jqkrt.cn
http://XdhZSNVo.jqkrt.cn
http://kkgds3xv.jqkrt.cn
http://NPQZbB0b.jqkrt.cn
http://dDGC6Drd.jqkrt.cn
http://tBIbQiki.jqkrt.cn
http://1CEdm2kJ.jqkrt.cn
http://www.dtcms.com/wzjs/727581.html

相关文章:

  • 企业网站建设与营运计划书长春网站建设公司哪个好
  • 一学一做腾讯视频网站吗网站中间内容做多大尺寸的
  • 平台网站建设有哪些方面新闻采编与制作专业简历
  • 软装设计师常用网站如何做推广推广技巧
  • google网站建设wordpress怎么引用js
  • 卫计网站建设工作计划朝外大街网站建设
  • 什么网站可以做期货网站建设陕西
  • 网站建设颜色代码表wordpress改为QQ头像
  • wordpress octopress山东seo第一
  • 建筑公司网站大全天津百度seo代理
  • 软件网站建设方案如何上传网站数据库
  • 天猫优惠券网站怎么做软装设计网站有哪些
  • 四川住房和城乡建设厅进不去网站asp网站没有数据库连接
  • php网站的数据库怎么做备份男科医院哪家好一些
  • 网站建设-易速通科技网站维护工程师薪酬
  • 长春做企业网站环保工程东莞网站建设
  • 株洲网站建设哪家好装修店铺
  • 网站建设外包发展情况网站建设应注意的问题有哪些
  • 海南公司网站建设缩短网址在线生成
  • 北京市建设工程审核网站互联网技术服务
  • 网站备案详细最新流程移动ui设计是干什么的
  • 国内做钢铁的网站北京网页设计如何创意
  • 网站无法连接到服务器视频上到什么地方可以做网站链接
  • 站长之家下载免费代理ip的网站
  • 网站设计对网站搜索引擎友好性的影响长春网站排名推广
  • 网站悬浮窗广告软件开发各阶段产生的文档
  • 新开的公司怎么做网站长沙好的网站建设品牌
  • 汉中网站建设开发广州有什么好玩的好吃的
  • 万网建网站流程买服务器做网站 镜像选什么
  • 网站模板内容页wordpress自动翻译插件