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

wap网站的未来搜索引擎优化seo公司

wap网站的未来,搜索引擎优化seo公司,做企业网站要多长时间,自己弄个网站怎么赚钱Go语言GIN框架安装与入门 文章目录 Go语言GIN框架安装与入门1. 创建配置环境2. 配置环境3. 下载最新版本Gin4. 编写第一个接口5. 静态页面和资源文件加载6. 各种传参方式6.1 URL传参6.2 路由形式传参6.3 前端给后端传递JSON格式6.4 表单形式传参 7. 路由和路由组8. 项目代码mai…

Go语言GIN框架安装与入门

文章目录

  • Go语言GIN框架安装与入门
    • 1. 创建配置环境
    • 2. 配置环境
    • 3. 下载最新版本Gin
    • 4. 编写第一个接口
    • 5. 静态页面和资源文件加载
    • 6. 各种传参方式
      • 6.1 URL传参
      • 6.2 路由形式传参
      • 6.3 前端给后端传递JSON格式
      • 6.4 表单形式传参
    • 7. 路由和路由组
    • 8. 项目代码main.go
    • 9. 总结

之前学习了一周的GO语言,学会了GO语言基础,现在尝试使用GO语言最火的框架GIN来写一些简单的接口。看了B站狂神说的GIN入门视频,基本明白如何写接口了,下面记录一下基本的步骤。

1. 创建配置环境

我们使用Goland创建第一个新的开发环境,这里只要在windows下面安装好Go语言,Goroot都能自动识别。
在这里插入图片描述
新的项目也就只有1个go.mod的文件,用来表明项目中使用到的第三方库。
在这里插入图片描述

2. 配置环境

我们使用第三方库是需要从github下载的,但是github会经常连不上,所以我们就需要先配置第三方的代理地址。我们再Settings->Go->Go Modules->Environment下面配上代理地址。

GOPROXY=https://goproxy.cn,direct

在这里插入图片描述

3. 下载最新版本Gin

在IDE里面的Terminal下面安装Gin框架,使用下面的命令安装Gin,安装完成以后,go.mod下面require就会自动添加依赖。

go get -u github.com/gin-gonic/gin

在这里插入图片描述

4. 编写第一个接口

创建main.go文件,然后编写以下代码,这里定义了一个/hello的路由。

package mainimport "github.com/gin-gonic/gin"func main() {ginServer := gin.Default()ginServer.GET("/hello", func(context *gin.Context) {context.JSON(200, gin.H{"msg": "hello world"})})ginServer.Run(":8888")}

编译运行通过浏览器访问,就可以输出JSON。

在这里插入图片描述

5. 静态页面和资源文件加载

使用下面代码加入项目下面的静态页面(HTML文件),以及动态资源(JS)。

	// 加载静态页面ginSever.LoadHTMLGlob("templates/*")// 加载资源文件ginSever.Static("/static", "./static")

这是项目的资源文件列表
在这里插入图片描述
其中index.html文件如下

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>我的第一个GO web页面</title><link rel="stylesheet" href="/static/css/style.css"><script src="/static/js/common.js"></script>
</head>
<body><h1>谢谢大家支持</h1>获取后端的数据为:
{{.msg}}<form action="/user/add" method="post"><p>username: <input type="text" name="username"></p><p>password: <input type="text" name="password"></p><button type="submit"> 提 交 </button>
</form></body>
</html>

接着就可以响应一个页面给前端了。

	// 响应一个页面给前端ginSever.GET("/index", func(context *gin.Context) {context.HTML(http.StatusOK, "index.html", gin.H{"msg": "这是go后台传递来的数据",})})

在这里插入图片描述

6. 各种传参方式

6.1 URL传参

在后端获取URL传递来的参数。

	// 传参方式//http://localhost:8082/user/info?userid=123&username=dfaginSever.GET("/user/info", myHandler(), func(context *gin.Context) {// 取出中间件中的值usersession := context.MustGet("usersession").(string)log.Println("==========>", usersession)userid := context.Query("userid")username := context.Query("username")context.JSON(http.StatusOK, gin.H{"userid":   userid,"username": username,})})

其中上面多加了一个中间键,就是接口代码运行之前执行的代码,myHandler的定义如下:

// go自定义中间件
func myHandler() gin.HandlerFunc {return func(context *gin.Context) {// 设置值,后续可以拿到context.Set("usersession", "userid-1")context.Next() // 放行}
}

6.2 路由形式传参

	// http://localhost:8082/user/info/123/dfaginSever.GET("/user/info/:userid/:username", func(context *gin.Context) {userid := context.Param("userid")username := context.Param("username")context.JSON(http.StatusOK, gin.H{"userid":   userid,"username": username,})})

6.3 前端给后端传递JSON格式

	// 前端给后端传递jsonginSever.POST("/json", func(context *gin.Context) {// request.bodydata, _ := context.GetRawData()var m map[string]interface{}_ = json.Unmarshal(data, &m)context.JSON(http.StatusOK, m)})

6.4 表单形式传参

	ginSever.POST("/user/add", func(context *gin.Context) {username := context.PostForm("username")password := context.PostForm("password")context.JSON(http.StatusOK, gin.H{"msg":      "ok","username": username,"password": password,})})

7. 路由和路由组

	// 路由ginSever.GET("/test", func(context *gin.Context) {context.Redirect(http.StatusMovedPermanently, "https://www.baidu.com")})// 404ginSever.NoRoute(func(context *gin.Context) {context.HTML(http.StatusNotFound, "404.html", nil)})// 路由组userGroup := ginSever.Group("/user"){userGroup.GET("/add")userGroup.POST("/login")userGroup.POST("/logout")}orderGroup := ginSever.Group("/order"){orderGroup.GET("/add")orderGroup.DELETE("delete")}

8. 项目代码main.go

package mainimport ("encoding/json""github.com/gin-gonic/gin""log""net/http"
)// go自定义中间件
func myHandler() gin.HandlerFunc {return func(context *gin.Context) {// 设置值,后续可以拿到context.Set("usersession", "userid-1")context.Next() // 放行}
}func main() {// 创建一个服务ginSever := gin.Default()//ginSever.Use(favicon.New("./icon.png"))// 加载静态页面ginSever.LoadHTMLGlob("templates/*")// 加载资源文件ginSever.Static("/static", "./static")//ginSever.GET("/hello", func(context *gin.Context) {//	context.JSON(200, gin.H{"msg": "hello world"})//})//ginSever.POST("/user", func(c *gin.Context) {//	c.JSON(200, gin.H{"msg": "post,user"})//})//ginSever.PUT("/user")//ginSever.DELETE("/user")// 响应一个页面给前端ginSever.GET("/index", func(context *gin.Context) {context.HTML(http.StatusOK, "index.html", gin.H{"msg": "这是go后台传递来的数据",})})// 传参方式//http://localhost:8082/user/info?userid=123&username=dfaginSever.GET("/user/info", myHandler(), func(context *gin.Context) {// 取出中间件中的值usersession := context.MustGet("usersession").(string)log.Println("==========>", usersession)userid := context.Query("userid")username := context.Query("username")context.JSON(http.StatusOK, gin.H{"userid":   userid,"username": username,})})// http://localhost:8082/user/info/123/dfaginSever.GET("/user/info/:userid/:username", func(context *gin.Context) {userid := context.Param("userid")username := context.Param("username")context.JSON(http.StatusOK, gin.H{"userid":   userid,"username": username,})})// 前端给后端传递jsonginSever.POST("/json", func(context *gin.Context) {// request.bodydata, _ := context.GetRawData()var m map[string]interface{}_ = json.Unmarshal(data, &m)context.JSON(http.StatusOK, m)})// 表单ginSever.POST("/user/add", func(context *gin.Context) {username := context.PostForm("username")password := context.PostForm("password")context.JSON(http.StatusOK, gin.H{"msg":      "ok","username": username,"password": password,})})// 路由ginSever.GET("/test", func(context *gin.Context) {context.Redirect(http.StatusMovedPermanently, "https://www.baidu.com")})// 404ginSever.NoRoute(func(context *gin.Context) {context.HTML(http.StatusNotFound, "404.html", nil)})// 路由组userGroup := ginSever.Group("/user"){userGroup.GET("/add")userGroup.POST("/login")userGroup.POST("/logout")}orderGroup := ginSever.Group("/order"){orderGroup.GET("/add")orderGroup.DELETE("delete")}// 端口ginSever.Run(":8888")}

9. 总结

以上就是Gin入门的所有内容了,大家觉得还有帮助,欢迎点赞收藏哦。

http://www.yidumall.com/news/374.html

相关文章:

  • 宜兴市的城乡建设管理局网站游戏推广公司怎么接游戏的
  • wordpress 最好的插件seo优化一般包括
  • 不是固定ip如何做网站网站备案是什么意思
  • 津做网站网络营销的基本方法
  • 上海公司网站公安备案查询百度推广登录后台登录入口
  • 怎样创建自己公司的网站优化网络推广外包
  • 自己电脑如何做网站服务器cms网站
  • 网站建设公司有多少钱站长统计免费下载
  • 计算机关于网站开发的证书站长之家最新域名查询
  • 做网站界面尺寸优化seo排名
  • 企业网站程序源码seo优化网站
  • 今天石家庄出什么事了长沙企业seo服务
  • 大红门桥做网站最近10条重大新闻
  • wordpress开发视频网站模板sem是什么?
  • 做3d教学网站简单免费制作手机网站
  • xiu主题做的网站微信营销方案
  • 网站权重优化方式只需要手机号的广告
  • 哪些网站专门做细胞的网站建设一条龙
  • 课程设计做淘宝网站的目的软文案例大全300字
  • 化妆品企业网站建设开网店哪个平台靠谱
  • 飞机选做网站信息流广告投放平台
  • 自己做的网站怎么赚钱吗河南百度推广代理商
  • 本地做网站图片怎么存互联网广告销售好做吗
  • 互联网站的建设维护营销双11各大电商平台销售数据
  • 做外单要上什么网站天天seo百度点击器
  • 微网站开发平台 知乎网站优化公司
  • 用eclipce做登录网站推广的方式有哪些
  • 做网站推淘宝客百度知道下载
  • 网站建设佛山拓客科技营销型网站有哪些平台
  • 成都有没有做网站建设的如何获取热搜关键词