文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Go语言中Get/Post请求测试实例分析

2023-06-30 17:43

关注

本篇内容主要讲解“Go语言中Get/Post请求测试实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go语言中Get/Post请求测试实例分析”吧!

gin安装

先将gin安装一下,安装依赖go语言还是比较方便的。

在安装之前先配置一下goproxy。

命令如下:

go env -w GO111MODULE=ongo env -w GOPROXY=https://mirrors.aliyun.com/goproxy/   //阿里代理go env -w GOPROXY=https://goproxy.cn   //七牛云代理

安装一下gin,命令如下:

go get github.com/gin-gonic/gin

Get请求测试

实现一个web服务还是比较简单的,创建一个router,绑定路由规则即可。先测试几个Get请求。

样例代码如下:

package main import ("github.com/gin-gonic/gin""net/http") func main() {router := gin.Default()router.GET("/", func(context *gin.Context) {context.String(http.StatusOK, "hello world")}) router.GET("/test/:name", func(context *gin.Context) {name := context.Param("name")context.String(http.StatusOK, "check param %s", name)}) router.GET("/test1", func(context *gin.Context) {name := context.DefaultQuery("name", "张三")gender := context.Query("gender")context.String(http.StatusOK, "他叫%s,性别:%s", name, gender)}) router.Run(":8080")}

执行结果

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:   export GIN_MODE=release
 - using code:  gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /                         --> main.main.func1 (3 handlers)
[GIN-debug] GET    /test/:name               --> main.main.func2 (3 handlers)
[GIN-debug] GET    /test1                    --> main.main.func3 (3 handlers)
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[GIN-debug] Listening and serving HTTP on :8080

[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend yo
u to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-
proxies for details.
[GIN-debug] Listening and serving HTTP on :8080

测试一下,这里我是用的接口测试工具为ApiPost

Go语言中Get/Post请求测试实例分析

Go语言中Get/Post请求测试实例分析

Go语言中Get/Post请求测试实例分析

注意

在使用context.DefaultQuery方法的时候,可以提供一个默认值。

除了可以使用":"来获取路径参数外,可以使用"*",可以匹配更多规则。我个人感觉我不会这么用get请求参数。

Post请求测试

Post请求是在项目中使用的比较多的,而且不管是使用form获取参数还是body,都十分常见。

同时返回的数据也不可能使用一行字符串,实际项目中还是使用json格式居多。

所以下面我使用form参数和body参数实现了一下post测试接口。

完成代码如下

package main import ("encoding/json""fmt""github.com/gin-gonic/gin""io/ioutil""net/http") type Result struct {Name string `json:"name"`Age  int    `json:"age"`} //反序列化为结构体对象func parseJson(a string) Result {fmt.Printf("原始字符串: %s\n", a)var c Resultif err := json.Unmarshal([]byte(a), &c); err != nil {fmt.Println("Error =", err)return c}return c} func main() {router := gin.Default()router.GET("/", func(context *gin.Context) {context.String(http.StatusOK, "hello world")}) router.GET("/test/:name", func(context *gin.Context) {name := context.Param("name")context.String(http.StatusOK, "check param %s", name)}) router.GET("/test1", func(context *gin.Context) {name := context.DefaultQuery("name", "张三")gender := context.Query("gender")context.String(http.StatusOK, "他叫%s,性别:%s", name, gender)}) router.POST("/testPost", func(context *gin.Context) {name := context.PostForm("name")nick := context.DefaultPostForm("nick", "leo")context.JSON(http.StatusOK, gin.H{"status": gin.H{"code":    http.StatusOK,"success": true,},"name": name,"nick": nick,})}) router.POST("/testPost2", func(context *gin.Context) {data, _ := ioutil.ReadAll(context.Request.Body)fmt.Println(string(data))context.JSON(http.StatusOK, gin.H{"code": http.StatusOK,"data": parseJson(string(data)),})}) router.Run(":8080")}

测试一下testPost和testPost2接口

Go语言中Get/Post请求测试实例分析

Go语言中Get/Post请求测试实例分析

注意

使用context.DefaultPostForm方法可以提供一个默认值。

可以使用gin.H方法构造json结构返回。

将获得打参数反序列化为结构体,这部分的代码使用到之前讲json解析的笔记。

到此,相信大家对“Go语言中Get/Post请求测试实例分析”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯