package main
import (
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
router.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
router.Run(":8080") // listen and serve on 0.0.0.0:8080
}
简单几行代码,就能实现一个web服务 。使用gin的Default方法创建一个路由handler 。然后通过HTTP方法绑定路由规则和路由函数 。不同于net/http库的路由函数,gin进行了封装,把request和response都封装到gin.Context的上下文环境 。最后是启动路由的Run方法监听端口 。麻雀虽?。?五脏俱全 。当然 , 除了GET方法,gin也支持POST,PUT,DELETE,OPTION等常用的restful方法 。
Gin可以很方便的支持各种HTTP请求方法以及返回各种类型的数据,详情可以前往查看 。
2.1 匹配参数
我们可以使用Gin框架快速的匹配参数 , 如下代码所示:
冒号:加上一个参数名组成路由参数 。可以使用c.Param的方法读取其值 。当然这个值是字串string 。诸如/user/rsj217,和/user/hello都可以匹配,而/user/和/user/rsj217/不会被匹配 。
浏览器输入以下测试:
返回结果为:
其中c.String是gin.Context下提供的方法 , 用来返回字符串 。
其中c.Json是gin.Context下提供的方法,用来返回Json 。
下面我们使用以下gin提供的Group函数 , 方便的为不同的API进行分类 。
我们创建了一个gin的默认路由,并为其分配了一个组 v1,监听hello请求并将其路由到视图函数HelloPage,最后绑定到 0.0.0.0:8000
C.JSON是Gin实现的返回json数据的内置方法,包含了2个参数,状态码和返回的内容 。http.StatusOK代表返回状态码为200,正文为{"message": “welcome"} 。
注:Gin还包含更多的返回方法如c.String, c.HTML, c.XML等,请自行了解 。可以方便的返回HTML数据
我们在之前的组v1路由下新定义一个路由:
下面我们访问
可以看到,通过c.Param(“key”)方法,Gin成功捕获了url请求路径中的参数 。同理,gin也可以捕获常规参数,如下代码所示:
在浏览器输入以下代码:
通过c.Query(“key”)可以成功接收到url参数,c.DefaultQuery在参数不存在的情况下,会由其默认值代替 。
我们还可以为Gin定义一些默认路由:
这时候,我们访问一个不存在的页面:
返回如下所示:
下面我们测试在Gin里面使用Post
在测试端输入:
附带发送的数据,测试即可 。记住需要使用POST方法.
继续修改 , 将PostHandler的函数修改如下
测试工具输入:
发送的内容输入:
返回结果如下:
备注:此处需要指定Content-Type为application/x-www-form-urlencoded,否则识别不出来 。
一定要选择对应的PUT或者DELETE方法 。
Gin框架快速的创建路由
能够方便的创建分组
支持url正则表达式
支持参数查找(c.Param c.Query c.PostForm)
请求方法精准匹配
支持404处理
快速的返回给客户端数据,常用的c.String c.JSON c.Data
gin是多线程并发吗是的
M代表一个内核线程,也可以称为一个工作线程 。goroutine就是跑在M之上的 。(两个M如果运行在一个CPU上就是并发,如果运行在不同CPU就是并行 。)
P 代表着处理器,或是程序执行上下文,将等待执行的G与M对接 。Go的运行时系统会适时地让P与不同的M建立或断开关联,以使P中的那些可运行的G能够及时获得运行时机;
G代表协程(是一个轻量级的执行线程),可以有多个;
(go采用了基于消息并发模型的方式 。它将基于CSP模型的并发编程内置到了语言中,通过一个go关键字就可以轻易地启动一个Goroutine , 而且在Goroutine之间是共享内存的 。)
推荐阅读
- 路由器怎么检查好坏,路由器如何检查正常
- redis使用教程视频,redis妙用
- js判断一个字符串是不是数字类型,js判断一个字符串是否是另一个的子串
- 怪物格斗dx游戏,大怪兽格斗dx游戏
- python注册退出函数 退出python的命令
- 营销制度如何影响营销活动,营销制度有哪些内容
- python友元函数,python 友元
- 解谜游戏有趣游戏,解谜游戏有哪些?
- linux一些常用命令 linux常用命令大全