我是靠谱客的博主 微笑抽屉,最近开发中收集的这篇文章主要介绍Gin框架,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

中文文档

https://github.com/skyhee/gin-doc-cn

脚手架包目录

配置文件放到config包下,其他需要依赖config的包支持依赖,不需要从main.go一级一级的传递下去

 

路由参数

指的是在路由路径中定义的参数,例如请求 URI 是 /user/42,42 作为用户的 ID,那么 42 就是路由参数

 

查询参数

注意路由参数不是查询字符串,例如 /user?ID=42, 这个 ID=42,也就是问号后边的才是查询字符串

 

必选参数

使用 :param 的语法完成必选参数,例如 /user/:ID,即可匹配 /user/42 这个 URI,但不能匹配 /user 或 /user/ 这个 URI

可选参数

使用 *param 的语法完成可选参数的定义,例如 /user/*ID 可以匹配 /user/42 和 /user 或 /user 的 URI,例如:

router.GET("/user/:ID", func(c *gin.Context) {
    ID := c.Param("ID")
})

若没有匹配到,则 ID 为空字符串

 

 

 

 

1.URL中带参数,如 Get /user/10000/group/200   ,则获取的id是10000, group_id是200

group := engine.Group("user")
group.GET("/:user_id/group/:group_id", controller.GetUserHandler)
id := c.Param("user_id")
groupId := c.Param("group_id")

2.gin 可以使用middleware,你在middleware里面解析token,拿到user_id 等等不就可以了嘛,这样是比较正规的

engine := gin.Default() //默认启动,包含 Logger、Recovery 中间件

3. 定义gin的上下文变量

func CustomRouterMiddle1(c *gin.Context)  {	
	//在gin上下文中定义一个变量
	c.Set("example1", "CustomRouterMiddle1")
	//在处理方法中读取
	//strAccountId := c.Keys["example1"].(string) 或者使用c.GetString("example1")
	//请求之前
	c.Next()
}

4.获取post的原始字符串

	data, err := c.GetRawData()
    if err!=nil {
        //log.Fatalln(err)
	}
		
	fmt.Printf("recv post data:n %sn", data)

5.接收post body中传递数组

//服务端解析
userId := c.PostFormArray("userId")

//客户端发送
func httpPostForm() {
	users := []string{"1000", "1001","1002"}
    resp, err := http.PostForm("http://127.0.0.1:18000/group/create",
        url.Values{"userId": users , "groupName": {"123"}})
 
    if err != nil {
        // handle error
    } 
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        // handle error
    } 
    fmt.Println(string(body)) 
}

6. 加载html,css资源

package main
import (
	"github.com/gin-gonic/gin"		
	"net/http"
)

func main() {
    r := gin.Default()
	r.LoadHTMLFiles("./static/html/index.html") //加载主页
	r.StaticFS("/static", http.Dir("./static")) //加载./static/css/* 等资源文件,如果不加载css,也可以不调用
    r.GET("/", func(c *gin.Context) {
        c.HTML(200, "index.html", "")
    })
    r.Run("0.0.0.0:8080")
}
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<script src="/static/js/common/angular.min.js"></script>
	<link rel="stylesheet" href="/static/css/bootstrap.css" />
	<script type="text/javascript" src="/static/js/common/jquery.min.js"></script>
	<script type="text/javascript" src="/static/js/common/bootstrap.js"></script>
	<body ng-app="myApp">
		<a>xingming: </a><input type="text" />
		<div  ng-controller="apiCtrl">
			<input type="text" ng-model="name"><br> <button class = "btn btn-success">删除</button>
			<input type="text" ng-model="url"><br>
			
			<br>
			First Name: <input type="text" ng-model="firstName"><br>
			Last Name: <input type="text" ng-model="lastName"><br>			
		</div>		
		<br>	
	</body>
	<script>
	var app = angular.module('myApp', []);	
	app.controller('apiCtrl', function($scope) {
	    $scope.name= "GetName";
	    $scope.url= "http://127.com";
		$scope.firstName= "John";
		$scope.lastName= "Doe";
	});
	</script>
</html>

 

最后

以上就是微笑抽屉为你收集整理的Gin框架的全部内容,希望文章能够帮你解决Gin框架所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部