接口传值后不起作用_前端工程师吐后端工程师(第八讲)——接口的开发
上一讲我们介绍了如何写让模板变量在页面上展示,本讲我们介绍一下后端开发工作中最常用的功能——接口。创建一个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"字符串,返回给前端页面。
另外,在服务器控制台我们也能看到用户携带的对应参数信息,这部分信息不是我们打印的,而是Gin自动会在控制台拼接出访问用户的PATH,如下图所示。
我们已经讲过了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请求看看返回如下图所示。
c.String(http.StatusOK, "hello %s %s %s", name, password, result)方法中,我们请求的参数都已经返回。可以大家观察到还有一个fmt.Println(ok)没有输出。fmt.Println(ok)要在控制台中观察。如下图所示:
下面我们就对在后端中获取Gin中POST的参数的三个常用方法做一下介绍。
PostForm获取POST参数,如果没有获取到对应key的返回值,触发零值机制,返回空字符串
DefaultPostForm获取POST参数,如果没有获取到返回key的返回值,返回设置的默认值,也就是DefaultPostForm函数的第二个参数。
GetPostForm获取post参数,但是有两个返回值,第一个返回值表示返回结果,如果没有获取对应key的返回值时,同样出发零值机制,返回空字符串。第二个返回值会返回当时key值是否存在的状态,能获取到返回true,如果不能获取到返回false。
到此最常用的两种获取数据方式就介绍到这里了,有了他们其实我们就可以应对大部分的业务逻辑接口。
陈辰(CC老师) 978563552@qq.com
接口传值后不起作用_前端工程师吐后端工程师(第八讲)——接口的开发相关推荐
- 接口传值后不起作用_聊一聊 API 接口测试
知其然亦知其所以然,接口测试没有那么复杂,但也没有那么简单. 本文作者:张敏,软件测试工程师,就职于一家容器平台解决方案公司,负责 DevOps 产品的测试. 什么是 API API(Applicat ...
- html请求接口_前端工程师吐后端工程师(第八讲)——接口的开发
上一讲我们介绍了如何写让模板变量在页面上展示,本讲我们介绍一下后端开发工作中最常用的功能--接口.创建一个go_test4文件夹,然后把go_test3中的代码复制进去.然后打开main.go文件,进 ...
- 七夕节马上要到了,前端工程师,后端工程师,算法工程师都怎么哄女朋友开心?
这篇文章的前提是,你得有个女朋友,没有就先收藏着吧! 七夕节的来源是梁山伯与祝英台的美丽传说,化成了一对蝴蝶~ 美丽的神话!虽然现在一般是过214的情人节了,但是不得不说,古老的传统的文化遗产,还是要 ...
- 前端工程师和后端工程师的区别?
有很多小伙伴都听说过前端开发和后端开发,但是却不知道两种岗位都是干嘛的有什么区别,今天小千就来给大家介绍一下前端工程师和后端工程师的区别,方便大家理解. 前端工程师 前端工程师是互联网时代软件产品研发 ...
- mysql 前端后端_前端开发者学习后端(一) —— mysql 命令
一.我想说 作为一名web前端工程师,也要尝试学习后端知识,从数据库基础开始.下面是一些常用的mysql数据库命令,会持续更新,而且后期会推出koa+mysql的简单实践,在这篇文章之后~_~ 二.创 ...
- IT、CT、UI、前端工程师以及后端工程师的简绍
IT指的是信息技术产业,一些软件开发,软件管理: CT指的是通讯技术产业,2/3/4/5G通信技术. UI是UI设计师,是根据产品的需求,设计出图案,在界面中设计和排版对应的交互.视觉元素. 前端工程 ...
- 【数据结构_浙江大学MOOC】第六七八讲 图
列出连通集 题目 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点. 输 ...
- multipartfile前端怎么传_前端那些事如何更好管理 Api 接口
❝ 前沿:自从前端和后端分家之后,前后端接口对接就成为了家常,"谁"也离不开谁,而对接接口的过程就离不开接口文档,比较主流就是Swagger(强大的API文档工具),当然今天它不是 ...
- python 调用支付宝微信接口_前端在h5页面调起微信支付接口和支付宝接口(日常笔记)...
微信支付 微信文档中的例子如下. function onBridgeReady(){ WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "ap ...
最新文章
- MVC控件类型-自定义控件
- 15个PHP库,你值得拥有!(下)
- java ip输入框_JavaScript实现IP地址的输入框方式
- script setup 影响methods选项导出函数
- Google Data Studio:漂亮,免费,易于使用的数据可视化工具
- logistic回归模型
- CC2530和8051(51单片机)的关系
- DAO层和Service层的究极理解--这波我在大气层
- 服务器信号灯一直闪烁,光猫的光信号灯一直闪红灯
- swiper的小bug slideTo方法不触发slideChangeTransitionStart(swiper)
- 唧唧DOWN闪退的原因
- 如何实现emoji文本字数计算?以及输入框限制指定字符数?
- ArcBlock世界第一区块链基石生态系统
- 基于Springboot框架的登录注册页面
- 【互联网人的英语】什么时候适合用“词根词缀法”来背单词?
- 单例模式之懒汉式单例模式
- C语言的for循环转verilog,Verilog for 循环语句
- Android BitMap图片压缩
- chown -R 用户名:组名 ./ 及 chown用法介绍
- 瑞吉外卖项目:新增菜品与菜品分页查询
热门文章
- linux批量切割图片,MAC中用Shell脚本批量裁剪各种尺寸的App图标
- Foxmail邮件字体大小怎么设置 Foxmail字体的设置方法
- win7系统每次开机都需要疑难解答的原因与解决方法
- 小学认识计算机硬件ppt,认识计算机硬件课件.ppt
- html语言循环语句,Scala @功能/语言的HTML文档 - for循环,如果语句等
- 这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析
- 比较Spring AOP和AspectJ
- c++byte数组和文件的相互转换_终于!word、excel、ppt文件相互转换技巧来了!
- mie散射粒子消光系数 matlab代码,一种球形粒子GMie散射效率极值的算法
- php pdf 文字水印图片,php如何给pdf加上文字水印和图片水印[未测试]