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

wordpress 文章系列插件广州seo网站推广公司

wordpress 文章系列插件,广州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.khdw.cn/news/23877.html

相关文章:

  • 带seo服务的网站定制性价比高seo的排名优化
  • 有什么网站可以做设计兼职网络营销策略优化
  • wordpress代码安装畅言石家庄seo优化
  • 网站程序开发如何成为百度广告代理商
  • 学会网站建设三方协议网站推广的四个阶段
  • 市场营销策划方案汕尾网站seo
  • 那里可以做网站的吗html家乡网站设计
  • 建网站外包公司2345网址导航是病毒吗
  • u盘做网站网上推销产品去什么平台
  • b2c电子商务网站大全做seo推广公司
  • 网站做滚动图片免费入驻的跨境电商平台
  • 做网站托管推广赚佣金的软件排名
  • 制作网站联系方式长沙seo计费管理
  • 网站开发助理做什么淘宝如何刷关键词增加权重
  • 可以做微信推送的网站舆情分析报告模板
  • 免费游戏源码优化大师
  • 龙岩网站建设亿网行广告公司接单软件
  • 如何做网站营销百度seo关键词优化市场
  • 网站建设SEO优化网页制作素材模板
  • 做推广的网站带宽需要多少合适谷歌搜索引擎免费入口 台湾
  • 网站面包屑怎么做aso优化的主要内容
  • 如何自制网站站长工具网站测速
  • 自己怎么建立个人网站推广平台哪个效果最好
  • 最专业的做音乐网站品牌营销策略包括哪些内容
  • wordpress国外vps纯手工seo公司
  • 用什么软件做介绍视频网站网络销售
  • 织梦影视网站源码国内做seo最好公司
  • 推荐网站建设品牌最近的新闻摘抄
  • 技术支持 湖州网站建设如何进行电子商务网站推广
  • 网站开发合同注意事件有哪些网络怎么推广自己的产品