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

海淘网站国外建设网站流程

海淘网站,国外建设网站流程,wordpress 访问页面空白,郑州最好的精神病医院目录 一:经典入门案例二:请求参数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/651280/

相关文章:

  • 家居企业网站建设新闻整合营销方案案例
  • 做网站后期都用什么软件临沂企业宣传片制作公司
  • 网站建设怎么制作网站北京北控京奥建设有限公司网站
  • 网站标题 逗号百度云wordpress建站
  • 做网站开发面临的困难做啥网站比较好赚钱
  • 建设工程规划许可证公示网站本地部署iis部署网站
  • 塘厦企业网站推广公司正定网站设计公司
  • 做网站登录页面的论文app开发制作在哪儿
  • 中国建设银行互联网站如何制作自己的app
  • 如何做好网站宣传企业网站建设费用的预算
  • 中国十大网站排名做网站公司哪里好
  • 做个简单的网站什么网站简单
  • 上海建材网站建设网站建设与维护需要
  • 我想自己建个网站买货 怎么做设计师导航网站
  • 自己的网站怎么在百度上面推广网站建设申请报告
  • 网站颜色搭配技巧网店运营推广的概念
  • 2003系统建网站成都app开发公司排名
  • 国家企业公司网站建设wordpress category id
  • 化妆品购物网站建设目的wordpress 前台登录
  • 长沙网站制作收费明细国内软件外包公司
  • 钓鱼网站的制作教程中国风网页设计欣赏
  • xp怎么做网站服务器网站建设制作深圳
  • 科技 公司 响应式 网站wordpress主题显示不出来
  • 沭阳网站建设方案上海泵阀网站建设
  • 联合年检在什么网站做中国万维网官网域名注册网站
  • 网站开发的程序平台工程公司网站模板下载
  • wordpress导航自定义廊坊优化网站排名
  • 南宁网站建设哪家公司实权威发布公众号
  • 阳谷网站建设公司国外工会网站建设
  • 秦皇岛哪有网站优化公司中国今天刚刚发生的新闻