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

贵阳网站建设gzzctyi企业网站建设市场分析

贵阳网站建设gzzctyi,企业网站建设市场分析,做网站然后卖,百度推广产品有哪些目录 一:经典入门案例二:请求参数2.1: API参数2.2: URL参数2.3: 表单参数 三: 响应参数四:数据解析和绑定4.1: JSON数据解析绑定4.2: FROM表单数据解析和绑定 五: 路由组六:异步处理七:中间件7.…

目录

    • 一:经典入门案例
    • 二:请求参数
      • 2.1: API参数
      • 2.2: URL参数
      • 2.3: 表单参数
    • 三: 响应参数
    • 四:数据解析和绑定
      • 4.1: JSON数据解析绑定
      • 4.2: FROM表单数据解析和绑定
    • 五: 路由组
    • 六:异步处理
    • 七:中间件
      • 7.1: 全局中间件
      • 7.2: 局部中间件

一:经典入门案例

  • 代码:
    package mainimport ("github.com/gin-gonic/gin""net/http"
    )func main() {// 1:实例化默认路由r := gin.Default()// 2: 编写路由处理函数r.GET("/hello", func(context *gin.Context) {context.String(http.StatusOK, "hello world!!!")})// 3: 路由监听端口r.Run(":8080")
    }
    
  • 请求:
    在这里插入图片描述

二:请求参数

2.1: API参数

  • API参数: 参数写在路径中。
  • 注意:
    • 1: 一般用冒号 + 路径参数名称来划分。 冒号的作用是可以让Param方法取到后面的数据。
    • 2: 如果是用星号 + 路径名称,则获取到的是包含路径斜杠+后续的所有内容的。
  • 案例一:
    	package mainimport ("github.com/gin-gonic/gin""net/http")func main() {// 1:实例化默认路由r := gin.Default()// 2: 编写路由处理函数r.GET("/user/:name/:action", func(context *gin.Context) {name := context.Param("name")action := context.Param("action")context.String(http.StatusOK, "name is "+name+", action is "+action+"。")})// 3: 路由监听端口r.Run(":8080")}```
    - 结果, 发送请求:http://127.0.0.1:8080/user/renshanwen/reading
    

在这里插入图片描述

  • 案例二:
    package mainimport ("github.com/gin-gonic/gin""net/http"
    )func main() {// 1:实例化默认路由r := gin.Default()// 2: 编写路由处理函数r.GET("/user/*name_action", func(context *gin.Context) {nameAction := context.Param("name_action")context.String(http.StatusOK, "name_action is "+nameAction)})// 3: 路由监听端口r.Run(":8080")
    }
    

在这里插入图片描述

2.2: URL参数

  • URL参数:参数写在请求k-v对中。
  • 使用Query()函数获取参数信息, 获取不到默认获取到空字符串。
  • 案例
    package mainimport ("github.com/gin-gonic/gin""net/http"
    )func main() {// 1:实例化默认路由r := gin.Default()// 2: 编写路由处理函数r.GET("/user", func(context *gin.Context) {name := context.Query("name")age := context.Query("age")context.String(http.StatusOK, "name is "+name+" age is "+age+".")})// 3: 路由监听端口r.Run(":8080")
    }
    

在这里插入图片描述

2.3: 表单参数

  • POST请求中的信息, 一般是JSON数据。
  • 使用PostForm函数在表单中获取数据。
  • 案例:
    package mainimport ("github.com/gin-gonic/gin""net/http"
    )func main() {// 1:实例化默认路由r := gin.Default()// 2: 编写路由处理函数r.POST("/user", func(context *gin.Context) {name := context.PostForm("name")age := context.PostForm("age")context.String(http.StatusOK, "name is "+name+" age is "+age+".")})// 3: 路由监听端口r.Run(":8080")
    }

在这里插入图片描述

  • 解析JSON数据
  • 案例:
    package mainimport ("github.com/gin-gonic/gin""net/http""strconv"
    )func main() {// 1:实例化默认路由r := gin.Default()// 定义一个User结构体type User struct {Name string `json:"name"`Age  int64  `json:"age"`}// 2: 编写路由处理函数r.POST("/user", func(context *gin.Context) {// 实例化UserreqData := User{}// 将内容绑定到字典中context.BindJSON(&reqData)// 构造响应context.String(http.StatusOK, "name is "+reqData.Name+" age is "+strconv.FormatInt(reqData.Age, 10)+".")})// 3: 路由监听端口r.Run(":8080")
    }
    
  • 结果
    在这里插入图片描述

三: 响应参数

  • Gin支持多种响应格式, 例如:json、结构体、XML、YAML类似于java的properties、ProtoBuf。
  • 最常用的就是json。
  • 案例:
    package mainimport ("github.com/gin-gonic/gin""net/http"
    )func main() {// 1:实例化默认路由r := gin.Default()// 定义一个User结构体type User struct {Name string `json:"name"`Age  int64  `json:"age"`}// 2: 编写路由处理函数r.POST("/user", func(context *gin.Context) {// 实例化UserreqData := User{}// 将内容绑定到字典中context.BindJSON(&reqData)respData := gin.H{"name": "renshanwen","age":  25,}// 构造响应context.JSON(http.StatusOK, respData)})// 3: 路由监听端口r.Run(":8080")
    }
    
  • 结果:
    在这里插入图片描述

四:数据解析和绑定

4.1: JSON数据解析绑定

  • 案例:
package mainimport ("github.com/gin-gonic/gin""net/http"
)func main() {// 1:实例化默认路由r := gin.Default()// 定义一个User结构体type User struct {// 名称 类型   被解析的类型:参数名称 binding:"required"表示必须绑定(请求中必须携带)Name string `json:"name" binding:"required"`Age  int64  `json:"age"`}// 2: 编写路由处理函数r.POST("/user", func(context *gin.Context) {// 实例化UserreqData := User{}// 将内容绑定到字典中if err := context.BindJSON(&reqData); err == nil {respData := gin.H{"name": "renshanwen","age":  25,}// 构造响应context.JSON(http.StatusOK, respData)} else {context.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})}})// 3: 路由监听端口r.Run(":8080")
}
  • 缺失name测试
    在这里插入图片描述
  • 缺失age测试
    在这里插入图片描述

4.2: FROM表单数据解析和绑定

  • 表单只需要调整一下使用的方法:Bind和定义的类型form
    package mainimport ("github.com/gin-gonic/gin""net/http"
    )func main() {// 1:实例化默认路由r := gin.Default()// 定义一个User结构体type User struct {// 名称 类型   被解析的类型:参数名称 binding:"required"表示必须绑定(请求中必须携带)Name string `form:"name" binding:"required"`Age  int64  `form:"age"`}// 2: 编写路由处理函数r.POST("/user", func(context *gin.Context) {// 实例化UserreqData := User{}// 将内容绑定到字典中if err := context.Bind(&reqData); err == nil {respData := gin.H{"name": "renshanwen","age":  25,}// 构造响应context.JSON(http.StatusOK, respData)} else {context.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})}})// 3: 路由监听端口r.Run(":8080")
    }
    
  • 测试
    在这里插入图片描述
    在这里插入图片描述

五: 路由组

  • 作用:根据URL前缀可以分组。
  • 案例:
    package mainimport ("github.com/gin-gonic/gin""net/http"
    )// 定义一个User结构体
    type User struct {// 名称 类型   被解析的类型:参数名称 binding:"required"表示必须绑定(请求中必须携带)Name string `form:"name" binding:"required"`Age  int64  `form:"age"`
    }func main() {// 实例化默认路由r := gin.Default()// 定义一个路由组userRoutes := r.Group("/user"){userRoutes.POST("/shan", test)userRoutes.POST("/wen", test)}// 路由监听端口r.Run(":8080")
    }func test(context *gin.Context) {// 实例化UserreqData := User{}// 将内容绑定到字典中if err := context.Bind(&reqData); err == nil {respData := gin.H{"name": "renshanwen","age":  25,}// 构造响应context.JSON(http.StatusOK, respData)} else {context.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})}
    }
    
  • 测试
    在这里插入图片描述

六:异步处理

  • 需求:某些处理, 我们可以放在后台去做, 接口要求立刻返回数据。 则可以使用异步处理的方式。
  • 案例
    package mainimport ("fmt""github.com/gin-gonic/gin""net/http""time"
    )// 定义一个User结构体
    type User struct {// 名称 类型   被解析的类型:参数名称 binding:"required"表示必须绑定(请求中必须携带)Name string `form:"name" binding:"required"`Age  int64  `form:"age"`
    }func main() {// 实例化默认路由r := gin.Default()// 定义一个路由组userRoutes := r.Group("/user"){userRoutes.POST("/action", test)}// 路由监听端口r.Run(":8080")
    }func test(context *gin.Context) {// 实例化UserreqData := User{}// 将内容绑定到字典中if err := context.Bind(&reqData); err == nil {respData := gin.H{"name": "renshanwen","age":  25,}// 进行异步处理go func() {for i := 0; i < 10; i++ {fmt.Printf("正在处理 %d \n", i)time.Sleep(3 * time.Second)}}()// 构造响应context.JSON(http.StatusOK, respData)} else {context.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})}
    }
    
  • 结果, 先返回了响应, 后进行循环处理。
    在这里插入图片描述

七:中间件

7.1: 全局中间件

  • 所有的请求都经过的中间件。
  • 例如: 所有的请求都经过

7.2: 局部中间件

http://www.yayakq.cn/news/848742/

相关文章:

  • 公司建设网站成果预测网站定制开发 团队
  • 会员制网站 建设建设厅证件查询系统
  • html5 触屏网站 案例濮阳seo网站建设
  • 梵高网站建设网站的主机
  • 常青藤网站建设在线教育网站开发时长
  • 平台营销型网站建设网页设计师培训学院
  • 郑州模板网站制作汤唯梁朝伟做视频网站
  • 网站开发软件下载整个局域网都无法访问wordpress
  • 技术支持 郑州做网站短视频投放方案
  • 金华专业的网站建设互联网广告投放
  • 手机wap网站建设解决方案wordpress后台数据库改密码
  • 青岛谁家做网站产品宣传册模板免费
  • 网络公司经营范围哪些温州网站建设seo
  • 重庆营销型网站开发公司网址转换二维码
  • 高校网站建设意义个人建设网站服务器怎么解决
  • 营销型网站建设的指导原则html购物网页设计
  • 档案信息网站开发利用网站前期设计
  • 钓鱼网站的制作教程找素材去哪个网站
  • 公司做网站费用会计分录那种网站建设软件最好
  • 营销网站案例什么意思学校网站建设的风险分析
  • 做生产计划类的网站wordpress文章版权主题插件
  • 网站的外链是什么网页加速器ios
  • 免费做那个的视频网站好网站建设需要申请经营范围
  • 中国文化网站建设策划书wordpress acf主题选项
  • 顺德网站建设找顺的网站建设与熊掌号未来的关系
  • 招聘织梦网站扒站wordpress主题
  • 网站建设可以帮助花店怎么样竹制品网站怎么做
  • 丽水网站建设专业的公司河南那家公司做家具行业网站好
  • 网站突然打不开是什么原因公司网站横幅如何做
  • 网站建设需要的客户资料做网站技巧