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

自己电脑做网站iis怎么做网络销售的网站

自己电脑做网站iis,怎么做网络销售的网站,网站底部 图标,wordpress手机双模板下载前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 前言 我们在专栏的前面几篇文章内讲解了Gin框架的路由配置#xff0c;服务启动等内容。 专栏地址… 前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 前言 我们在专栏的前面几篇文章内讲解了Gin框架的路由配置服务启动等内容。 专栏地址https://blog.csdn.net/qq_35716689/category_12575301.html 在我们平常添加路由处理函数之后就可以在路由处理函数中编写业务处理代码了但在此之前我们往往需要获取请求参数本文就详细的讲解下gin获取请求参数常见的几种方式。 目录 前言 传递参数的方式 Header URL HTTP Body 直接获取请求参数 获取URL Path中的参数 获取URL Query中的参数 获取HTTP Body中的参数 绑定请求参数 绑定Header参数 绑定URL Path参数 绑定URL Query参数 绑定HTTP Body参数 数据校验 两种方式的对比 小结 传递参数的方式 在一个HTTP请求中一般可以把上传参数分为以下三个部分 Header Header是HTTP请求中一个键值对集合HTTP规范定义了很多的Headeer比如Content-TypeAccept等不过也可以自定义请求头部或者响应头部。 URL URL指的是请求路径在请求路径上可以通过两种方式携带请求参数一种是直接写在请求路径上的称为URL Path http://localhost:8080/user/add 在URL上传递参数的另外一种方式就是URL QueryURL Query参数是指跟在?后面的键值对集合多个参数之间以分隔的 http://localhost:8080/user/add?name小明gender男 HTTP Body HTTP Body参数是指HTTP请求的请求体所携带的参数这部分参数会因为Content-Type不同而不同比如当Content-Type为application/json时HTTO Body携带的是一串JSON字符串。 那么在Gin框架中要如何获取这些请求参数呢主要有以下两种方式 直接用Gin封装的方法获取请求参数通过绑定的方式来获取请求参数 直接获取请求参数 Gin框架在net/http包的基础上封装了获取参数的方式。 获取URL Path中的参数 在路由中使用通配符时对应的通配符就会成为URL Path参数调用gin.Context的Param()方法可以获取Path参数 package main​func main(){engine : gin.Default()engine.GET(/user/:id, func(ctx *gin.Context) {id : ctx.Param(id)fmt.Fprintf(ctx.Writer, 你的请求id:%s, id)})engine.Run()}运行后发起请求 $ curl http://localhost:8080/user/100你的请求id:100 获取URL Query中的参数 gin.Context对象提供了以下几个主要方法用于获取Query参数 package main​import (fmt​github.com/gin-gonic/gin)​func main() {engine : gin.New()engine.GET(/user/list, func(ctx *gin.Context) {//获取单个值name : ctx.Query(name)//带默认值gender : ctx.DefaultQuery(gender, 男)//数组habits : ctx.QueryArray(habits)//mapworks : ctx.QueryMap(works)fmt.Printf(%s,%s,%s,%s\n, name, gender, habits, works)})​engine.Run()}运行后发起请求 curl -X GET http://localhost:8080/user/list?nameJohngender男habits[]readinghabits[]sportsworks[teacher]mathworks[engineer]computer John,男,[reading sports],map[engineer:computer teacher:math] 获取HTTP Body中的参数 对于通过HTTP Body传上来的参数gin.Context也提供了几种主要方法用于获取 package main​import (fmt​github.com/gin-gonic/gin)​func main() {engine : gin.New()engine.POST(/user/add, func(ctx *gin.Context) {//获取单个值name : ctx.PostForm(name)//带默认值gender : ctx.DefaultPostForm(gender, 男)//数组habits : ctx.PostFormArray(habits)//mapworks : ctx.PostFormMap(works)fmt.Printf(%s,%s,%s,%s\n, name, gender, habits, works)})​engine.Run()}绑定请求参数 Gin支持绑定HeaderURL PathURL Query以及HTTP Body等不同位置数据。 绑定Header参数 绑定Header参数可以使用BindHeader()或者ShouldBindHeader()方法 package main​import (fmtnet/http​github.com/gin-gonic/gin)​type testHeader struct {Rate   int    header:RateDomain string header:Domain}​func main() {r : gin.Default()r.GET(/, func(c *gin.Context) {h : testHeader{}​if err : c.ShouldBindHeader(h); err ! nil {c.JSON(http.StatusBadRequest, err)return}​fmt.Printf(%#v\n, h)c.JSON(http.StatusOK, gin.H{Rate: h.Rate, Domain: h.Domain})})​r.Run()}运行后的请求结果 $ curl -H rate:300 -H test:123 http://localhost:8080/ {Test:123,Rate:300}绑定URL Path参数 绑定URL Path参数可以使用BindUri()或者ShouldBindUri()方法 package mainimport (fmtnet/httpgithub.com/gin-gonic/gin )type User struct {Name string uri:nameEmail string uri:email }func main() {engine : gin.New()engine.GET(/user/list/:email/:name, func(ctx *gin.Context) {var u Userif err : ctx.BindUri(u);err ! nil {ctx.JSON(http.StatusBadRequest, err)return}fmt.Fprintf(ctx.Writer, 你输入的用户名为%s,邮箱为%s\n, u.Name, u.Email)})engine.Run() }运行后的请求结果  curl -X GET http://localhost:8080/user/list/john163.com/john 你输入的用户名为john,邮箱为john163.com 绑定URL Query参数 绑定URL Query参数可以使用BindQuery()、ShouldBindQury()、Bind()或者ShouldBind()方法 package mainimport (fmtnet/httpgithub.com/gin-gonic/gin )type User struct {Name string form:nameEmail string form:email }func main() {engine : gin.New()engine.GET(/user/list, func(ctx *gin.Context) {var u Userif err : ctx.BindQuery(u);err ! nil {ctx.JSON(http.StatusBadRequest, err)return}fmt.Fprintf(ctx.Writer, 你输入的用户名为%s,邮箱为%s\n, u.Name, u.Email)})engine.Run() }运行后的请求结果 curl -X GET http://localhost:8080/user/list?emailjohn163.comnamejohn 你输入的用户名为john,邮箱为john163.com 绑定HTTP Body参数 我们知道HTTP Body的参数会根据不同Content-Type传不同格式的数据Gin支持以下几种Content-Type类型的绑定 JSONXMLTOMLYAMLx-www-form-urlencodedmultipart/form-data 注意HTTP Body的数据只在POST请求时才会进行绑定。 绑定HTTP Body参数可以用Bind()和ShouldBind()方法这两个方法会根据当前请求的Content-Type类型自动判断请求的类型。 package mainimport (fmtnet/httpgithub.com/gin-gonic/gin )type User struct {Name stringEmail string }func main() {engine : gin.New()engine.POST(/user/add, func(ctx *gin.Context) {var u Userif err : ctx.Bind(u); err ! nil {ctx.JSON(http.StatusBadRequest, err.Error())return}fmt.Fprintf(ctx.Writer, 你输入的用户名为%s,邮箱为%s\n, u.Name, u.Email)})engine.Run() }如果明确请求数据的类型也可以直接调用对应类型绑定的方法比如确定是JSON格式数据的话可以调用BindJSON()或者ShouldBindJSON() package mainimport (fmtnet/httpgithub.com/gin-gonic/gin )type User struct {Name stringEmail string }func main() {engine : gin.New()engine.POST(/user/add, func(ctx *gin.Context) {var u Userif err : ctx.BindJSON(u); err ! nil {ctx.JSON(http.StatusBadRequest, err.Error())return}fmt.Fprintf(ctx.Writer, 你输入的用户名为%s,邮箱为%s\n, u.Name, u.Email)})engine.Run() }对于x-www-form-urlencoded和multipart/form-data与Qurey参数一样结构体需要添加form的tag package mainimport (fmtnet/httpgithub.com/gin-gonic/gin )type User struct {Name string form:nameEmail string form:email }func main() {engine : gin.New()engine.POST(/user/add, func(ctx *gin.Context) {var u Userif err : ctx.Bind(u); err ! nil {ctx.JSON(http.StatusBadRequest, err.Error())return}fmt.Fprintf(ctx.Writer, 你输入的用户名为%s,邮箱为%s\n, u.Name, u.Email)})engine.Run() }数据校验 在数据绑定的时候也可以进行数据校验这里我们为User结构体的标签添加了required属性要求这个字段必须要有 package mainimport (fmtnet/httpgithub.com/gin-gonic/gin )type User struct {Name string binding:requiredEmail string binding:required }func main() {engine : gin.New()engine.POST(/user/add, func(ctx *gin.Context) {var u Userif err : ctx.Bind(u); err ! nil {ctx.JSON(http.StatusBadRequest, err.Error())return}fmt.Fprintf(ctx.Writer, 你输入的用户名为%s,邮箱为%s\n, u.Name, u.Email)})engine.Run() }两种方式的对比 相较于直接获取请求参数请求数据绑定是一种更强大且优雅的参数获取方式使用这种方式获取参数有以下几个好处 直接将所有参数绑定到一个结构体中不需要手动一个个地获取参数。绑定后的参数会自动转换为结构体对应字段的类型不需要手动对每个参数进行数据类型转换。在进行数据绑定的同时还可以进行数据校验。 小结 直接获取请求参数虽然没有绑定参数那么强大但对于简单的请求来说也是够用的因此我们可以根据自己的需求选择对应的方式来获取请求参数。
http://www.yingshimen.cn/news/162992/

相关文章:

  • 郑州网站建设公司价格怎样自己做免费的网站
  • 电商购物网站制作网站 公司
  • 微信网站建设报价做设计哪个网站可以接单
  • 做网站的软件是哪个普陀网站建设
  • 网站开发 科技寄生虫网站排名代做
  • 百度网站数据统计怎么做软件开发模型的v模型图
  • 全椒网站建设芙蓉区营销型网站建设定制
  • 国内有名的网站设计公司百度搜到网站
  • 嘉兴高端建站公司自己建个网站需要什么
  • 建设网站注意实现家具网站开发任务书
  • 如何看网站做没做推广芜湖做的好的招聘网站
  • 网站建设方案书 icp备案百度贴吧网页版登录入口
  • 企业网站的建设包括公司的网站开发部门叫什么
  • 旅游电子商务网站的建设方案手机上的网站是怎么做的吗
  • 旅行社网站建设方案书如何查看网站空间商
  • wap网站制作怎么做西地那非最佳吃法
  • 安顺建设工程造价管理网站协会宣传网站开发方案
  • 网站搭建教学文化建设成就
  • 网站前端用什么语言装宽带需要多少钱一个月
  • 广州网站设计服务相城seo网站优化软件
  • 做的网站底部应该标注什么意思全网加速器
  • 广州优化网站建设苏醒主题wordpress
  • 网站默认首页怎么做网站推广如何做
  • 学网站设计和平面设计网站建设必备语言
  • 全县网站建设情况通报邯郸百度推广代理商
  • 定制类网站公司想建个网站怎么弄
  • 市场营销策划方案ppt四川做网站优化价格
  • mip wordpress主题广州网站优化步骤
  • 上海徐汇网站建设公司棋乐平台代理
  • 梅州网站建设wlwl顺德品牌网站建设信息