Gin框架入门(一)—HTTP请求
官方文档: 官方地址:
1.开始安装
- 先配置好GOROOT和GOPATH
- 输入命令:go get github.com/gin-gonic/gin
2.简单示例
//导入包 import ( "github.com/gin-gonic/gin" "net/http" ) func main() { //初始化引擎实例 router:=gin.Default() //注册一个Get请求的方法 router.GET("/", func(context *gin.Context) { context.String(http.StatusOK,"HelloWorld") }) router.Run()//默认8080端口 自己指定例如: router.Run(":8888") }
效果:
3.API示例
3.1.简单路由
func main() { //初始化引擎实例 router:=gin.Default() //路由1 //匹配/user/zhangsan 不匹配/user/zhangsan/user router.GET("/user/:name", func(context *gin.Context) { name:=context.Param("name") context.String(http.StatusOK,"you name is "+name) }) //路由2 router.GET("/user/:name/*action", func(c *gin.Context) { name := c.Param("name") action := c.Param("action") message := name + " is " + action c.String(http.StatusOK, message) }) router.Run() }
正确的路由1匹配: 错误的路由1匹配: 正确的路由2匹配: PS:从上面3个图可以看出路由1和路由2的区别。路由1参数前是":"的是只匹配/后的内容,如果和比正确的路由多个参数,则无法正确匹配。路由2参数前是 " * "的将匹配 /及之后的参数
常用的请求方式:GET、POST、PUT、PATCH、DELETE、OPTIONS
func main() { router := gin.Default() router.GET("/someGet", getting) router.POST("/somePost", posting) router.PUT("/somePut", putting) router.DELETE("/someDelete", deleting) router.PATCH("/somePatch", patching) router.HEAD("/someHead", head) router.OPTIONS("/someOptions", options) router.Run() //默认8080端口 自己指定例如: router.Run(":8888") }
3.2.GET方式传参
func main() { router := gin.Default() // 我们常见的URL链接很多都是 www.xxx.com/xxx?参数1=值1&参数2=值2这样的形式 // /welcome?firstname=Jane&lastname=Doe router.GET("/welcome", func(c *gin.Context) { //获取firstname参数,firstname参数不存在,则使用默认的值 也就是c.DefaultQuery的第二参数值 firstname := c.DefaultQuery("firstname", "Guest") //获取lastname参数,不设置默认值 lastname := c.Query("lastname") c.String(http.StatusOK, "Hello %s %s", firstname, lastname) }) router.Run() }
效果:
3.3.POST方式传参
func main() { router := gin.Default() router.POST("/form_post", func(c *gin.Context) { //获取post参数 message := c.PostForm("message") nick := c.DefaultPostForm("nick", "anonymous") c.JSON(200, gin.H{ "status": "ok", "message": message, "nick": nick, }) }) router.Run(":8080") }
PS:post请求不像get请求敲个地址就行,我们需要一些工具例如:postman
3.4.GET和POST方式结合传参
func main() { router := gin.Default() router.POST("/getAndpost", func(c *gin.Context) { id := c.Query("id") page := c.DefaultQuery("page", "0") name := c.PostForm("name") message := c.PostForm("message") fmt.Printf("Get方式:id: %s; page: %s; Post方式:name: %s; message: %s", id, page, name, message) }) router.Run() }
效果:
上一篇:
IDEA上Java项目控制台中文乱码