上一讲我们介绍了如何写让模板变量在页面上展示,本讲我们介绍一下后端开发工作中最常用的功能——接口。创建一个go_test4文件夹,然后把go_test3中的代码复制进去。然后打开main.go文件,进行更改。

说到接口就必不可少的涉及到传值和接口返回,还有GET方式 、POST方式获取数据。下面我们就先举例来看看一个GET接口如何接收参数并且返回数据,具体代码如下:

package main
import "github.com/gin-gonic/gin"
import "net/http"
func main() {r:= gin.Default()r.GET("/index", func(c *gin.Context) {firstname := c.Query("firstname")lastname := c.Query("lastname");c.String(http.StatusOK, "Hello %s %s", firstname, lastname)})r.Run(":9999") // listen and serve on 0.0.0.0:9999
}

代码前半部分还是跟第七讲中一样,我们只需要关注 c.Query 和 c.String这两个差异点就可以了。c.Query方法相当于Nodejs请求下图代码中的paramStr=url.parse(req.url).query;这一行代码。

var http=require('http'),url=require('url'),
querystring=require('querystring');
http.createServer(function(req,res{paramStr=url.parse(req.url).query;
)}

就是在url中查找Key为firstname的字段,然后把value 返回给firstname。lastname也是的获取方式也是一样的。

至于c.String本身跟c.HTML还是有一些差异的。c.String有三个参数,第一个是请求返回的Code码,这个参数直接http.StatusOK就可以。第二个参数是返回字符串原型,第三个是需要替换的字符串变量。

c.HTML也有三个参数,第一个也是请求返回的Code码,第二个是渲染HTML的模板地址(可以是html也就是不能设置模板变量的,也可以是tmpl可以设置模板变量的),最后一个是就是需要展示的模板变量名。

具体函数先介绍到这里,后面我们看一下运行代码之后的访问界面。

访问:http://localhost:9999/index?firstname=%22Chen1%22&lastname=%22Chen2%22

可以看到下图,我们在访问页面请求时加入了firtname和lastname参数。然后在通过Gin的router获取到了参数。最终把参数拼接为Hello "Chen1" "Chen2"字符串,返回给前端页面。

GET方法返回页面

另外,在服务器控制台我们也能看到用户携带的对应参数信息,这部分信息不是我们打印的,而是Gin自动会在控制台拼接出访问用户的PATH,如下图所示。

GET方法控制台输出

我们已经讲过了GET请求的方式返回数据,以及获取URL中的参数。

接下来我们该完成另一个在平时开发中常用的接口形式——POST方法传递数据。

接下来我们把main.go文件改为下面的代码。

package main
import ("fmt""net/http""github.com/gin-gonic/gin"
)
func main() {r := gin.Default()r.POST("/post", func(c *gin.Context) {name := c.PostForm("name")                           password := c.DefaultPostForm("password", "00000000")result, ok := c.GetPostForm("ok")                fmt.Println(ok)c.String(http.StatusOK, "hello %s %s %s", name, password, result)})r.Run(":9999") // listen and serve on 0.0.0.0:9999
}

然后执行go run main.go。

然后开启postman,发POST送一个请求,并且设置对应的参数name参数为aaaa,对应的password参数为password,对应的ok参数为ok。发送postman请求看看返回如下图所示。

Gin的POST返回

c.String(http.StatusOK, "hello %s %s %s", name, password, result)方法中,我们请求的参数都已经返回。可以大家观察到还有一个fmt.Println(ok)没有输出。fmt.Println(ok)要在控制台中观察。如下图所示:

println方法打印的true

下面我们就对在后端中获取Gin中POST的参数的三个常用方法做一下介绍。

PostForm获取POST参数,如果没有获取到对应key的返回值,触发零值机制,返回空字符串

DefaultPostForm获取POST参数,如果没有获取到返回key的返回值,返回设置的默认值,也就是DefaultPostForm函数的第二个参数。

GetPostForm获取post参数,但是有两个返回值,第一个返回值表示返回结果,如果没有获取对应key的返回值时,同样出发零值机制,返回空字符串。第二个返回值会返回当时key值是否存在的状态,能获取到返回true,如果不能获取到返回false。

到此最常用的两种获取数据方式就介绍到这里了,有了他们其实我们就可以应对大部分的业务逻辑接口。

陈辰(CC老师) 978563552@qq.com

接口传值后不起作用_前端工程师吐后端工程师(第八讲)——接口的开发相关推荐

  1. 接口传值后不起作用_聊一聊 API 接口测试

    知其然亦知其所以然,接口测试没有那么复杂,但也没有那么简单. 本文作者:张敏,软件测试工程师,就职于一家容器平台解决方案公司,负责 DevOps 产品的测试. 什么是 API API(Applicat ...

  2. html请求接口_前端工程师吐后端工程师(第八讲)——接口的开发

    上一讲我们介绍了如何写让模板变量在页面上展示,本讲我们介绍一下后端开发工作中最常用的功能--接口.创建一个go_test4文件夹,然后把go_test3中的代码复制进去.然后打开main.go文件,进 ...

  3. 七夕节马上要到了,前端工程师,后端工程师,算法工程师都怎么哄女朋友开心?

    这篇文章的前提是,你得有个女朋友,没有就先收藏着吧! 七夕节的来源是梁山伯与祝英台的美丽传说,化成了一对蝴蝶~ 美丽的神话!虽然现在一般是过214的情人节了,但是不得不说,古老的传统的文化遗产,还是要 ...

  4. 前端工程师和后端工程师的区别?

    有很多小伙伴都听说过前端开发和后端开发,但是却不知道两种岗位都是干嘛的有什么区别,今天小千就来给大家介绍一下前端工程师和后端工程师的区别,方便大家理解. 前端工程师 前端工程师是互联网时代软件产品研发 ...

  5. mysql 前端后端_前端开发者学习后端(一) —— mysql 命令

    一.我想说 作为一名web前端工程师,也要尝试学习后端知识,从数据库基础开始.下面是一些常用的mysql数据库命令,会持续更新,而且后期会推出koa+mysql的简单实践,在这篇文章之后~_~ 二.创 ...

  6. IT、CT、UI、前端工程师以及后端工程师的简绍

    IT指的是信息技术产业,一些软件开发,软件管理: CT指的是通讯技术产业,2/3/4/5G通信技术. UI是UI设计师,是根据产品的需求,设计出图案,在界面中设计和排版对应的交互.视觉元素. 前端工程 ...

  7. 【数据结构_浙江大学MOOC】第六七八讲 图

    列出连通集 题目 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点. 输 ...

  8. multipartfile前端怎么传_前端那些事如何更好管理 Api 接口

    ❝ 前沿:自从前端和后端分家之后,前后端接口对接就成为了家常,"谁"也离不开谁,而对接接口的过程就离不开接口文档,比较主流就是Swagger(强大的API文档工具),当然今天它不是 ...

  9. python 调用支付宝微信接口_前端在h5页面调起微信支付接口和支付宝接口(日常笔记)...

    微信支付 微信文档中的例子如下. function onBridgeReady(){ WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "ap ...

最新文章

  1. MVC控件类型-自定义控件
  2. 15个PHP库,你值得拥有!(下)
  3. java ip输入框_JavaScript实现IP地址的输入框方式
  4. script setup 影响methods选项导出函数
  5. Google Data Studio:漂亮,免费,易于使用的数据可视化工具
  6. logistic回归模型
  7. CC2530和8051(51单片机)的关系
  8. DAO层和Service层的究极理解--这波我在大气层
  9. 服务器信号灯一直闪烁,光猫的光信号灯一直闪红灯
  10. swiper的小bug slideTo方法不触发slideChangeTransitionStart(swiper)
  11. 唧唧DOWN闪退的原因
  12. 如何实现emoji文本字数计算?以及输入框限制指定字符数?
  13. ArcBlock世界第一区块链基石生态系统
  14. 基于Springboot框架的登录注册页面
  15. 【互联网人的英语】什么时候适合用“词根词缀法”来背单词?
  16. 单例模式之懒汉式单例模式
  17. C语言的for循环转verilog,Verilog for 循环语句
  18. Android BitMap图片压缩
  19. chown -R 用户名:组名 ./ 及 chown用法介绍
  20. 瑞吉外卖项目:新增菜品与菜品分页查询

热门文章

  1. linux批量切割图片,MAC中用Shell脚本批量裁剪各种尺寸的App图标
  2. Foxmail邮件字体大小怎么设置 Foxmail字体的设置方法
  3. win7系统每次开机都需要疑难解答的原因与解决方法
  4. 小学认识计算机硬件ppt,认识计算机硬件课件.ppt
  5. html语言循环语句,Scala @功能/语言的HTML文档 - for循环,如果语句等
  6. 这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析
  7. 比较Spring AOP和AspectJ
  8. c++byte数组和文件的相互转换_终于!word、excel、ppt文件相互转换技巧来了!
  9. mie散射粒子消光系数 matlab代码,一种球形粒子GMie散射效率极值的算法
  10. php pdf 文字水印图片,php如何给pdf加上文字水印和图片水印[未测试]