Golang发送POST请求并传递JSON数据

客户端

package mainimport ("c02_get_param/common""fmt""zdpgo_resty"
)func main() {// Create a Resty Clientclient := zdpgo_resty.New()// 设置字符串resp, err := client.R().SetHeader("Content-Type", "application/json").SetBody(`{"username":"testuser", "password":"testpass"}`). // 设置请求SetResult(&common.AuthSuccess{}).                          // 处理结果Post("http://127.0.0.1:3333/")if err != nil {fmt.Println("err:", err)return}fmt.Println(resp.String())// 设置字节resp, err = client.R().SetHeader("Content-Type", "application/json").SetBody([]byte(`{"username":"testuser", "password":"testpass"}`)).SetResult(&common.AuthSuccess{}). // or SetResult(AuthSuccess{}).Post("http://127.0.0.1:3333/")if err != nil {fmt.Println("err:", err)return}fmt.Println(resp.String())// 设置结构体resp, err = client.R().SetBody(common.UserRequest{Username: "testuser", Password: "testpass"}).SetResult(&common.AuthSuccess{}). // or SetResult(AuthSuccess{}).SetError(&common.AuthSuccess{}).  // or SetError(AuthError{}).Post("http://127.0.0.1:3333/")if err != nil {fmt.Println("err:", err)return}fmt.Println(resp.String())
}

请求对象

package commontype UserRequest struct {Username string `json:"username"`Password string `json:"password"`
}

响应对象

package commontype AuthSuccess struct {Code    int    `json:"code"`Status  bool   `json:"status"`Message string `json:"message"`Data    any    `json:"data,omitempty"`
}

服务端

package mainimport ("c02_get_param/common""encoding/json""net/http""zdpgo_chi""zdpgo_chi/middleware"
)func main() {r := zdpgo_chi.NewRouter()r.Use(middleware.RequestID)r.Use(middleware.RealIP)r.Use(middleware.Logger)r.Use(middleware.Recoverer)r.Post("/", func(w http.ResponseWriter, r *http.Request) {// 获取查询参数name := r.URL.Query().Get("name")age := r.URL.Query().Get("age")data := map[string]any{"name": name,"age":  age,}resp := common.AuthSuccess{Code:    10000,Status:  true,Message: "success",}// 获取请求头参数data["authorization"] = r.Header.Get("Authorization")// 获取请求体参数var req common.UserRequestjson.NewDecoder(r.Body).Decode(&req)defer r.Body.Close()data["json"] = req// 返回JSON数据resp.Data = datajsonData, err := json.Marshal(resp)if err != nil {w.Write([]byte(err.Error()))return}w.Write(jsonData)})http.ListenAndServe(":3333", r)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/15855.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AcWing 3466. 清点代码库(STL:map,vector)

3466. 清点代码库 需要求有几种不同数列&#xff0c;每种有多少个&#xff0c;可以想到用map。它的键是一个数列&#xff0c;可以把它放在vector里。也就是map<vector<int>,int> 要满足要求的输出序列&#xff0c;就要想把它放在其他容器&#xff0c;或数组里&…

mac清理缓存的命令

mac清理缓存的命令 在macOS中&#xff0c;你可以使用以下命令来清理缓存&#xff1a; 清理DNS缓存&#xff1a; sudo killall -HUP mDNSResponder 清理Metal缓存&#xff1a; mkdir ~/Library/Caches/com.apple.Metal 清理文件系统元数据缓存&#xff1a; sudo find /private/…

Vite + Vue3 部署 GitHub

因为静态资源是可以部署到 GitHub 上&#xff0c;自己顺便学习部署网站 因为我使用的是 Vite 工具&#xff0c;官方有提供相应 Demo 部署静态站点 | Vite 官方中文文档 新建文件夹 .github 然后再建一个文件夹 workflows 新建文件 main.yml 文件 直接使用官方文档 demo #…

什么是spring 的组件扫描?

Spring的组件扫描&#xff08;Component Scanning&#xff09;是Spring框架提供的一种机制&#xff0c;用于自动寻找和注册应用程序中的组件&#xff0c;进而减少显式的配置。这些组件通常是标有特定注解&#xff08;如Component, Service, Repository, Controller等&#xff0…

如何处理时间序列的缺失数据

您是否应该删除、插入或估算&#xff1f; 世界上没有完美的数据集。每个数据科学家在数据探索过程中都会有这样的感觉&#xff1a; df.info()看到类似这样的内容&#xff1a; 大多数 ML 模型无法处理 NaN 或空值&#xff0c;因此如果您的特征或目标包含这些值&#xff0c;则在…

Java-MySql:JDBC

目录 JDBC概述 JDBC搭建 1、导入mysql开发商提供的jar包 2、注册驱动 3、与数据库连接 注解&#xff1a; Statement&#xff1a; 代码 运行 PreparedStatement&#xff1a; 代码 运行 PreparedStatement和Statement Statement 增 代码 运行 删 代码 运…

九、图形化脚本

多年来&#xff0c; shell脚本一直都被认为是枯燥乏味的。但如果你准备在图形化环境中运行脚本时&#xff0c;就未必如此了。有很多与脚本用户交互的方式并不依赖read和echo语句。 9.1 创建文本菜单 创建交互式shell脚本最常用的方法是使用菜单。提供各种选项可以帮助脚本用户…

AI遇上遥感,未来会怎样?

随着航空、航天、近地空间等多个遥感平台的不断发展&#xff0c;近年来遥感技术突飞猛进。由此&#xff0c;遥感数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量也大幅增长&#xff0c;使其越来越具有大数据特征。对于相关研究而言&#xff0c;遥感大数据的出现为其提…

初识GPT

初识GPT GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一种基于Transformer架构的预训练语言模型&#xff0c;由人工智能研究公司OpenAI开发。GPT模型使用了一种称为“自回归”&#xff08;autoregressive&#xff09;的方法来生成文本&#xff0c;这意味…

Oracle执行DELETE语句后,回滚(还原)数据

--第一步&#xff1a;删除数据 DELETE FROM "EMPLOYEER" WHERE id 123 --第二步&#xff1a;查看数据列表(判断第一步中数据是否被删除) SELECT * FROM "EMPLOYEER" AS OF timestamp to_timestamp( 2024-05-22 11:51:00, yyyy-mm-dd hh24:mi:ss ) --第…

基于MetaGPT构建LLM多智能体

前言 你好&#xff0c;我是GISer Liu&#xff0c;在上一篇文章中&#xff0c;我们用了两万多字详细拆解了单个Agent的组成&#xff0c;并通过Github Trending订阅智能体理解MetaGPT框架的订阅模块如何解决应用问题&#xff0c;但是对于复杂&#xff0c;并行的任务&#xff0c;单…

【vue】el-select选择器实现宽度自适应

选择器的宽度根据内容长度进行变化 <div class"Space_content"><el-selectv-model"value":placeholder"$t(bot.roommessage)"class"select"size"small"style"margin-right: 10px"change"selectcha…

JavaSE——集合框架二(1/6)-前置知识-可变参数、Collections工具类

目录 可变参数 Collections工具类 Collections的常用静态方法 实例演示 可变参数 可变参数 就是一种特殊形参&#xff0c;定义在方法、构造器的形参列表里&#xff0c;格式是&#xff1a;数据类型...参数名称 可变参数的特点和好处 特点&#xff1a;可以不传数据给它&am…

SQL常用基础语句(一)-- ABCDE开头

AS 将列名从 count(*) 修改为 total select count(*) as total from users where status0 将列名 username 改为 uname&#xff0c; password 改为 upwd select username as uname, password as upwd from users BETWEEN AND 说明&#xff1a;BETWEEN 筛选的是 >value1且 &l…

小程序主体变更是通过迁移吗?是需要2个小程序吗?

小程序迁移变更主体有什么作用&#xff1f;好多朋友都想做小程序迁移变更主体&#xff0c;但是又不太清楚具体有啥用&#xff0c;今天我就来详细说说。首先&#xff0c;小程序迁移变更主体最重要的作用就是可以修改主体。比如你的小程序原来是 A 公司的&#xff0c;现在 A 公司…

并发编程笔记8--ThreadLocal结构详解

ThreadLocal&#xff0c;即线程变量&#xff0c;是一个以ThreadLocal对象为键&#xff0c;任意对象为值的存储结构。这个结构被附带在线程上&#xff0c;也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的值。可以通过set(T)方法来设置一个值&#xff0c;在…

标识符的命名规则和规范

标识符概念 Java对各种变量, 方法和类等命名时使用的字符序列称为标识符凡是自己可以起名字的地方都叫标识符 int num1 90; 标识符的命名规则(必须遵守) 由26个英文字母大小写, 0-9, _或$组成数字不可以开头. int 3ab 1;不可以使用关键字和保留字, 但能包含关键字和保留字…

操作系统实验四:多线程与信号量编程

操作系统实验上机 更多技术请访问&#xff1a;www.xuanworld.top 部分审核不通过的文章将发至个人博客&#xff1a;www.xuanworld.top 欢迎来52破解论坛阅读帖子&#xff1a;https://www.52pojie.cn/thread-1891208-1-1.html 实验名称实验序号实验日期实验人多线程与信号量…

010-Linux磁盘介绍

文章目录 1、名词 2、类型 3、尺寸 4、接口/协议/总线 5、命名 6、分区方式 MBR分区 GPT分区 1、名词 磁盘是计算机主要的存储介质&#xff0c;可以存储大量的二进制数据&#xff0c;并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘&#xff08;Floppy D…

普通测试工程师与测试开发工程师:为何年薪存在15万与30万+的差距?

普通测试工程师想要转型为测试开发工程师&#xff08;简称测开&#xff09;&#xff0c;需要学习一系列的知识和技能。以下是一些关键的学习领域&#xff1a; 编程能力&#xff1a;测试开发工程师需要具备一定的编程能力&#xff0c;能够编写自动化测试脚本和测试工具。因此&a…