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

c 用mysql做的网站app开发需要多少钱

c 用mysql做的网站,app开发需要多少钱,温州网站建设优化,开发大型网站Gin参数接收 文章目录 Gin参数接收1.各个参数的接收方法Gin中发送JSON数据Gin接收querystring数据Gin接收Form的参数Gin接收URI参数 2.参数绑定方式接收(更加方便)推荐一款软件 1.各个参数的接收方法 声明: 这里的c都是c *gin.Context中的c Gin中发送JSON数据 在传输或接受JS…

Gin参数接收

文章目录

  • Gin参数接收
    • 1.各个参数的接收方法
      • Gin中发送JSON数据
      • Gin接收querystring数据
      • Gin接收Form的参数
      • Gin接收URI参数
    • 2.参数绑定方式接收(更加方便)
      • 推荐一款软件

1.各个参数的接收方法

  • 声明: 这里的c都是c *gin.Context中的c

Gin中发送JSON数据

  • 在传输或接受JSON数据时,通常习惯通过创建结构体的方式存储数据

  • 注意点:

      1. 结构体中成员名需要大写字母开头,否则无法访问
      2. 需要再成员名后添加tag标签 ,方便传输以及接收数据
  • 方法

    func (c *Context) JSON(code int, obj any) {}
    
    • code是状态码,例如:http.StatusOK这是go语言内置变量
    • obj指需要传入的数据
  • 代码案例:

    package mainimport ("github.com/gin-gonic/gin""log""net/http"
    )// User 构建数据结构(存储json数据
    // 注意:1.需要大写字母开头否则无法访问
    // 注意:2.`json`是tag标签,这样方便定义前端显示名称
    type User struct {Name   string `json:"name"`Gender string `json:"gender"`Age    int    `json:"age"`
    }func main() {//启动服务器r := gin.Default()//发起请求r.GET("/Json", func(c *gin.Context) {data := &User{Name:   "贤哥",Gender: "男",Age:    18,}c.JSON(http.StatusOK, gin.H{"data": data,})})//运行服务器err := r.Run(":9000")if err != nil {log.Println("启动错误:", err)}
    }
    • 传数据习惯用gin中的gin.H{}

Gin接收querystring数据

  • 介绍:

    • //querystring 数据是在URl上的参数,例如:https://www.bing.com/search?q=邓超
      //这里的"q = 邓超"就是querystring,其中q是变量,邓超是值
      
  • 方法:

    • c.Query(key):根据变量名接收值
    • c.DefaultQuery(key,defaultValue):根据变量名接收值,如果没有该变量,就输出定义好的值
    • c.GETQuery(key):返回值有两个,一个是接收到的值,一个是布尔值,可以通过判断布尔值查看是否接受到值
  • 代码案例

    package mainimport ("github.com/gin-gonic/gin""log""net/http"
    )//querystring 数据是在URl上的参数,例如:https://www.bing.com/search?q=邓超
    //这里的"q = 邓超"就是querystring,其中q是变量,邓超是值type User struct {Name string `json:"name"`Age  string `json:"age"`
    }func main() {//创建Gin变量r := gin.Default()//发起请求r.GET("/query", func(c *gin.Context) {//单纯接收querystring的值data1 := c.Query("query")//接收querystring,如果没有接收到值就,输出定义好的值(类似这里的nothing)data2 := c.DefaultQuery("query", "nothing")//获取querystring的值,返回当前值和bool值,如何bool为false,默认返回空值data3, ok := c.GetQuery("query")if !ok {data3 = "nothing"}//可以将querystring的值,解析到结构体中存储//注意:结构体的成员名和querystring的变量名必须一致,否则解析不到var user Usererr := c.BindQuery(&user)if err != nil {log.Println(err)return}//可以用于相同变量却有多个值的情况接收变量,接收后的变量会被保存在切片中//query=尼玛&query=tm 输出 "query4":["尼玛","tm"]data4 := c.QueryArray("query")//通过Json数据发出c.JSON(http.StatusOK, gin.H{"query1": data1,"query2": data2,"query3": data3,"query4": data4,"user":   user,})})//启动服务器err := r.Run(":9000")if err != nil {log.Println("启动失败:", err)}
    }

Gin接收Form的参数

  • 结论: 方法的用法和querystring的基本一致

  • 代码:

    package mainimport ("github.com/gin-gonic/gin""log""net/http"
    )//任务:接收form的数据
    //1.创建form表单
    //2.解析数据func main() {r := gin.Default()//解析模板r.LoadHTMLFiles("./login.html", "./index.html")//渲染模板(渲染登录页面r.GET("/login", func(c *gin.Context) {c.HTML(http.StatusOK, "login.html", nil)})//点击form的登录按钮提交数据后会发起method方法的请求//所以得写一个post方法以及,输出数据到post渲染的网页r.POST("/login", func(c *gin.Context) {//单个接收表单数据//username := c.PostForm("username")password := c.PostForm("password")//单个接收表单的数据,如果没有参数就输出notDefault//username := c.DefaultPostForm("username", "notDefault")//以数组的方式接收值username := c.PostFormArray("username")//password, ok := c.GetPostForm("username")c.HTML(http.StatusOK, "index.html", gin.H{"username": username[0],"password": password,})//总结接收表单数据的各种函数基本和接收querystring参数的用法一致})//启动服务器err := r.Run(":9000")if err != nil {log.Println(err)return}
    }

Gin接收URI参数

  • 介绍

    • //了解什么是URI参数
      //例如一条URL为http://ouzhenxian.com/blog/2023/1
      //这里的URL中,可以指定2023和1为参数(是否是参数是由你的接收格式决定的
      //格式: "/blog/:year/:mouth",":"后面的参数就是需要被接收的数据
      
  • c.Param方法和querystring用法基本一致

  • 代码:

    package mainimport ("github.com/gin-gonic/gin""net/http"
    )
    func main() {r := gin.Default()r.GET("/blog/:year/:mouth", func(c *gin.Context) {year := c.Param("year")mouth := c.Param("mouth")c.JSON(http.StatusOK, gin.H{"year":  year,"mouth": mouth,})})//启动服务器err := r.Run(":9000")if err != nil {return}
    }
    

2.参数绑定方式接收(更加方便)

  • 核心方法c.ShouldBind()

  • 优点: 相比前面的更加快捷高效

  • 代码展示

    package mainimport ("fmt""github.com/gin-gonic/gin""log""net/http"
    )//任务: 利用ShouldBind()函数绑定参数type UserInfo struct {Username string `json:"username"  form:"username" uri:"username" query:"username"` //注意2点: 字段名需要大写,需要写tag,否则找不到Password string `json:"password"  form:"password" uri:"password" query:"password"`
    }func main() {r := gin.Default()//发出请求r.GET("/json", func(c *gin.Context) {var user UserInfoerr := c.ShouldBindJSON(&user) //注意:这里需要写&,否则是值传递,无法修改值if err != nil {log.Println(err)return}//处理数据fmt.Printf("%#v\n", user) //一起输出c.JSON(http.StatusOK, gin.H{"status": "ok",})})r.GET("/query", func(c *gin.Context) {var user UserInfoerr := c.ShouldBindQuery(&user) //注意:这里需要写&,否则是值传递,无法修改值if err != nil {log.Println(err)return}//处理数据fmt.Printf("%#v\n", user) //一起输出c.JSON(http.StatusOK, gin.H{"status": "ok",})})r.POST("/form", func(c *gin.Context) {var user UserInfoerr := c.ShouldBind(&user) //注意:这里需要写&,否则是值传递,无法修改if err != nil {log.Println(err)return}//处理数据fmt.Printf("%#v\n", user) //一起输出c.JSON(http.StatusOK, gin.H{"status": "ok",})})r.GET("/uri/:username/:password", func(c *gin.Context) {var user UserInfoerr := c.ShouldBindUri(&user) //注意:这里需要写&,否则是值传递,无法修改值if err != nil {log.Println(err)return}//处理数据fmt.Printf("%#v\n", user) //一起输出c.JSON(http.StatusOK, gin.H{"status": "ok",})})//启动服务器err := r.Run(":8080")if err != nil {log.Println(err)return}}
    
  • 注意点:

    • 1.结构体成员名首字母大写
    • 2.需要指定tag
    • 3.ShouldBind()接受的值必须是地址值(例如:&user)
  • 说明: Gin框架中不是每个数据格式都有对应的ShouldBind函数

    • 例如:这里的JSON数据有—>c.ShouldBindJSON(&user),而这里的表单Form数据没有对应的和函数,那就使用通用的c.ShouldBind(&user)

推荐一款软件

  • Postman软件: 在做网络开发过程中可以非常方便的传输数据测试,有兴趣的可以自行查看,该软件需要科学

文章转载自:
http://ascetical.bnpn.cn
http://chorda.bnpn.cn
http://strenuosity.bnpn.cn
http://enneastyle.bnpn.cn
http://acquirability.bnpn.cn
http://misogynist.bnpn.cn
http://sixain.bnpn.cn
http://sidelong.bnpn.cn
http://polycentrism.bnpn.cn
http://hyperemia.bnpn.cn
http://legioned.bnpn.cn
http://faunistic.bnpn.cn
http://outcaste.bnpn.cn
http://epigonus.bnpn.cn
http://monochromical.bnpn.cn
http://rowboat.bnpn.cn
http://unstressed.bnpn.cn
http://spaceward.bnpn.cn
http://syllabicate.bnpn.cn
http://rathaus.bnpn.cn
http://boxlike.bnpn.cn
http://harp.bnpn.cn
http://panacea.bnpn.cn
http://fibrocartilage.bnpn.cn
http://leucotomy.bnpn.cn
http://impairer.bnpn.cn
http://lest.bnpn.cn
http://wv.bnpn.cn
http://irreducible.bnpn.cn
http://mucksweat.bnpn.cn
http://deemster.bnpn.cn
http://fatuous.bnpn.cn
http://germinability.bnpn.cn
http://newman.bnpn.cn
http://clarinda.bnpn.cn
http://uxoriousness.bnpn.cn
http://analogously.bnpn.cn
http://aspartase.bnpn.cn
http://boina.bnpn.cn
http://passive.bnpn.cn
http://seriousness.bnpn.cn
http://propane.bnpn.cn
http://irrotational.bnpn.cn
http://dipping.bnpn.cn
http://hunchback.bnpn.cn
http://aneurysm.bnpn.cn
http://isopod.bnpn.cn
http://nonliquet.bnpn.cn
http://parboil.bnpn.cn
http://papable.bnpn.cn
http://larmor.bnpn.cn
http://scimiter.bnpn.cn
http://outpull.bnpn.cn
http://photic.bnpn.cn
http://canzone.bnpn.cn
http://interdepartmental.bnpn.cn
http://demagnetize.bnpn.cn
http://uncovenanted.bnpn.cn
http://grampus.bnpn.cn
http://paramount.bnpn.cn
http://misconception.bnpn.cn
http://wiredrawing.bnpn.cn
http://dunlop.bnpn.cn
http://coat.bnpn.cn
http://zeg.bnpn.cn
http://touchdown.bnpn.cn
http://plod.bnpn.cn
http://ammonoid.bnpn.cn
http://modesty.bnpn.cn
http://geobotany.bnpn.cn
http://heresiologist.bnpn.cn
http://outdoorsman.bnpn.cn
http://sistan.bnpn.cn
http://ruben.bnpn.cn
http://axon.bnpn.cn
http://perimetry.bnpn.cn
http://passible.bnpn.cn
http://duffel.bnpn.cn
http://univariant.bnpn.cn
http://unforeknowable.bnpn.cn
http://overdose.bnpn.cn
http://tritiate.bnpn.cn
http://maturely.bnpn.cn
http://jellify.bnpn.cn
http://adulterant.bnpn.cn
http://extensibility.bnpn.cn
http://voila.bnpn.cn
http://tightwire.bnpn.cn
http://curvet.bnpn.cn
http://bebung.bnpn.cn
http://corrigenda.bnpn.cn
http://vinculum.bnpn.cn
http://gonadotrophic.bnpn.cn
http://collaborate.bnpn.cn
http://menthaceous.bnpn.cn
http://unfathomed.bnpn.cn
http://miserliness.bnpn.cn
http://anhinga.bnpn.cn
http://hydrometeor.bnpn.cn
http://illuvium.bnpn.cn
http://www.dt0577.cn/news/61968.html

相关文章:

  • 医院网站建设管理规范百度推广年费多少钱
  • 顶呱呱网站建设博客网站
  • 山东省住房和城乡建设厅官网查询seo培训一对一
  • 有服务器自己怎么做网站seo查询站长工具
  • 专业的网络公司有哪些济南网站seo优化
  • 深圳网页设计公司排行优化网站seo
  • 云南省建设厅一级建造师网站淘宝seo搜索引擎原理
  • 合肥网站建设司图app拉新推广平台渠道商
  • 青岛seoseo培训机构哪家好
  • 一个人可做几次网站备案seo搜索引擎优化视频
  • 吉林智能网站建设制作常见的网络营销方式有哪些
  • 大连企业网站建设定制学做网站培训班要多少钱
  • 网站顶端大图怎么做seo标题优化关键词
  • wordpress 分类目录小工具草根seo博客
  • wordpress建手机网站吗怎么建立网站卖东西
  • 如何自己办网站深圳龙华区大浪社区
  • 网站建设公司价格差别怎么做公众号
  • 单页网站怎么卖竞价 推广
  • 一条龙做网站合肥网络推广软件系统
  • 营销网站的建设与管理包括哪些事项广州市疫情最新
  • 网页设计制作分段br成都网站建设seo
  • 英文域名在哪个网站查询建立网站需要什么
  • wordpress 升级慢南宁seo服务优化
  • 周期购那个网站做的比较好seo网站运营
  • ps做汽车网站下载下载百度推广app
  • 石家庄 网站 科技企业seo关键词优化
  • 怎样在各大网站发布信息今日军事新闻最新消息新闻报道
  • 做网站开发的商标注册桂林网页
  • ol游戏大全排行榜成都网站seo费用
  • 小红书推广网站seo编辑招聘