用go语言后端开发速查

在这里插入图片描述

文章目录

  • 一、发送请求和接收请求示例
    • 1.1 发送请求
    • 1.2 接收请求
  • 二、发送form-data格式的数据示例

用go语言发送请求和接收请求的快速参考

一、发送请求和接收请求示例

1.1 发送请求

package mainimport ("bytes""encoding/json""fmt""net/http"
)type Payload struct {Name  string `json:"topic"`Value string `json:"data"`
}func main() {// 构造要发送的数据payload := Payload{Name:  "example",Value: "this is a test",}// 将数据编码为JSONjsonData, err := json.Marshal(payload)if err != nil {fmt.Println("Error encoding JSON:", err)return}// 发送POST请求resp, err := http.Post("http://localhost:8080/devStatistic/pushDevStatistic","application/json", bytes.NewBuffer(jsonData))if err != nil {fmt.Println("Error sending POST request:", err)return}defer resp.Body.Close()// 打印响应状态fmt.Println("Response status:", resp.Status)
}

1.2 接收请求

package mainimport ("encoding/json""fmt""io/ioutil""net/http"
)type Payload struct {Name  string `json:"name"`Value string `json:"value"`
}func handler(w http.ResponseWriter, r *http.Request) {if r.Method == "POST" {// 读取请求体中的数据body, err := ioutil.ReadAll(r.Body)if err != nil {http.Error(w, "Error reading request body", http.StatusInternalServerError)return}// 打印原始请求体内容fmt.Println("Received request body:", string(body))// 将请求体数据解析为结构体var payload Payloaderr = json.Unmarshal(body, &payload)if err != nil {http.Error(w, "Error parsing JSON", http.StatusBadRequest)return}// 打印解析后的数据fmt.Printf("Parsed data: Name = %s, Value = %s\n", payload.Name, payload.Value)// 返回响应fmt.Fprintf(w, "Received data: Name = %s, Value = %s\n", payload.Name, payload.Value)} else {// 处理其他请求w.WriteHeader(http.StatusMethodNotAllowed)}
}func main() {http.HandleFunc("/", handler)fmt.Println("Server is running on http://localhost:8080")if err := http.ListenAndServe(":8080", nil); err != nil {fmt.Println("Error starting server:", err)}
}

二、发送form-data格式的数据示例

// sender.go
package mainimport ("bytes""fmt""mime/multipart""net/http"
)// SendHTTPSMessage 使用 multipart/form-data 发送消息
func SendHTTPSMessage(topic, text, ip string, port int) error {// 创建一个缓冲区用来存放 form-data 数据var formDataBuffer bytes.Bufferwriter := multipart.NewWriter(&formDataBuffer)// 添加 form-data 字段err := writer.WriteField("topic", topic)if err != nil {return fmt.Errorf("error adding topic field: %v", err)}err = writer.WriteField("content", text)if err != nil {return fmt.Errorf("error adding content field: %v", err)}// 关闭 writer,以便生成完整的 form-dataerr = writer.Close()if err != nil {return fmt.Errorf("error closing writer: %v", err)}// 构建目标 URLurl := fmt.Sprintf("https://%s:%d/api/send_message", ip, port)// 创建 HTTP POST 请求req, err := http.NewRequest("POST", url, &formDataBuffer)if err != nil {return fmt.Errorf("error creating HTTP request: %v", err)}// 设置请求头的 Content-Type 为 multipart/form-data,并包含 boundary 信息req.Header.Set("Content-Type", writer.FormDataContentType())// 创建 HTTP 客户端并发送请求client := &http.Client{}resp, err := client.Do(req)if err != nil {return fmt.Errorf("error sending HTTPS request: %v", err)}defer resp.Body.Close()// 打印响应状态fmt.Println("Response Status:", resp.Status)return nil
}

解释

  1. 使用 multipart.NewWriter** 创建 form-data**:
    • multipart.NewWriter 创建了一个 writer,可以将字段添加到 form-data。
    • 使用 WriteField 方法添加 topic 和 content 字段到 form-data。
  2. 设置 Content-Type
    • req.Header.Set(“Content-Type”, writer.FormDataContentType()) 会自动生成包含 boundary 的 Content-Type,这是 multipart/form-data 必需的格式。
  3. 发送请求:
    • 创建 HTTP 客户端并发送请求,与 JSON 的方式相同。

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

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

相关文章

针对股票评论的情感分类器

🏡作者主页:点击! 🤖编程探索专栏:点击! ⏰️创作时间:2024年11月16日13点39分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文链接 点击开启你的论文编程之旅…

Transformer学习笔记(一)

Transformer学习笔记 基于 3B1B 可视化视频 自注意力机制 1.每个词的初始嵌入是一个高维向量,只编码该单词含义,与上下文没有关联 2.对初始向量进行位置编码,在高维向量中编码进位置信息(单词在语言序列中的位置信息&#xff…

antd table表格设置最小宽度,列宽等比例显示

最近ui有个设计稿,表格要求如图: 由于本地antd table列宽column没有设置最小宽度minWidth属性,只有width属性,所以开发时我考虑按照列宽等比例计算后去设置width属性; 一、实现: 1.表头数组中设置minWidth…

算法沉淀一:双指针

目录 前言: 双指针介绍 对撞指针 快慢指针 题目练习 1.移动零 2.复写零 3.快乐数 4.盛水最多的容器 5.有效三角形的个数 6.和为s的两个数 7.三数之和 8.四数之和 前言: 此章节介绍一些算法,主要从leetcode上的题来讲解&#xff…

若点集A=B则A必能恒等变换地变为B=A这一几何常识推翻直线(平面)公理

黄小宁 关键词:“更无理”复数 复平面z各点z的对应点z1的全体是z1面。z面平移变为z1面就使x轴⊂z面沿本身平移变为ux1轴。R可几何化为R轴,R轴可沿本身平移变为R′轴,R′轴可沿本身平移变为R″轴,...。直线公理和平面公理使几百年…

HelloMeme 上手即用教程

HelloMeme是一个集成空间编织注意力的扩散模型,用于生成高保真图像和视频。它提供了一个代码库,包含实验代码和预训练模型,支持PyTorch和FFmpeg。用户可以通过简单的命令行操作来生成图像和视频。 本文将详细介绍,如何在GPU算力租…

Vue2+ElementUI:用计算属性实现搜索框功能

前言: 本文代码使用vue2element UI。 输入框搜索的功能,可以在前端通过计算属性过滤实现,也可以调用后端写好的接口。本文介绍的是通过计算属性对表格数据实时过滤,后附完整代码,代码中提供的是死数据,可…

blind-watermark - 水印绑定

文章目录 一、关于 blind-watermark安装 二、bash 中使用三、Python 调用1、基本使用2、attacks on Watermarked Image3、embed images4、embed array of bits 四、并发五、相关 Project 一、关于 blind-watermark Blind watermark 基于 DWT-DCT-SVD. github : https://githu…

【小白可懂】微信小程序---课表渲染

结果展示:(代码在最后) WeChat_20241116174431 项目简介 在数字化校园建设的大背景下,为了更好地服务于在校师生,我们开发了一款基于微信小程序的课表管理系统。该系统采用了现代化的前端技术和优雅的设计风格&#x…

Kafka一些常用的命令行操作【包含主题命令、生产者和消费者命令】

文章目录 1、主题命令2、生产者命令行操作3、消费者命令行操作 1、主题命令 查看当前服务器中的所有 topic: kafka-topics.sh --bootstrap-server node01:9092 --list 创建topic: kafka-topics.sh --bootstrap-server node01:9092 --create --topic to…

C# x Unity 从玩家控制类去分析命令模式该如何使用

本文部分内容出自游戏编程模式一书,游戏编程模式,有兴趣的小伙伴可以去看看,虽然不是unity x c#写的 但是思路挺好的 目录 目录 0.先说结论 发现问题 命令模式如何解耦 打个断点更利于分析 怎么实现延迟命令? 如何撤销命令? 脚本整体一览 不足分析(AI) 0.先说结论 …

Day44 | 动态规划 :状态机DP 买卖股票的最佳时机IV买卖股票的最佳时机III

Day44 | 动态规划 :状态机DP 买卖股票的最佳时机IV&&买卖股票的最佳时机III&&309.买卖股票的最佳时机含冷冻期 动态规划应该如何学习?-CSDN博客 本次题解参考自灵神的做法,大家也多多支持灵神的题解 买卖股票的最佳时机【…

IDEA2024:右下角显示内存

使用场景: 实时知晓idea内存使用情况 解决方案: 开启内存显示 View -> Apperance -> Status Bar Widgets -> Memory Indicator 效果如下:

HBase理论_背景特点及数据单元及与Hive对比

本文结合了个人的笔记以及工作中实践经验以及参考HBase官网,我尽可能把自己的知识点呈现出来,如果有误,还请指正。 1. HBase背景 HBase作为面向列的数据库运行在HDFS之上,HDFS缺乏随机读写操作,HBase正是为此而出现。…

git创建远程仓库,以gitee码云为例GitHub同理

git远程Remote服务端仓库构建的视频教程在这 Git建立服务端Remote远程仓库,gitee码云例,Github_哔哩哔哩_bilibili 1、登gitee码云/Github 登录 - Gitee.com https://github.com/ (没账号的注册一下就行) 点击如下图位置的创…

windows工具 -- 使用rustdesk和云服务器自建远程桌面服务, 手机, PC, Mac, Linux远程桌面 (简洁明了)

目的 向日葵最先放弃了, todesk某些功能需要收费, 不想用了想要 自己搭建远程桌面 自己使用希望可以电脑 控制手机分辨率高一些 原理理解 ubuntu云服务器配置 够买好自己的云服务器, 安装 Ubuntu操作系统 点击下载 hbbr 和 hbbs 两个 deb文件: https://github.com/rustdesk/…

计算机网络各层设备总结归纳(更新ing)

计算机网络按照OSI(开放式系统互联)模型分为七层,每一层都有其特定的功能和对应的网络设备。以下是各层对应的设备: 1. 物理层(Physical Layer) 设备:中继器(Repeater)、集线器…

Oracle19C AWR报告分析之Wait Classes by Total Wait Time

Oracle19C AWR报告分析之Wait Classes by Total Wait Time 一、分析数据二、详细分析2.1 指标参数介绍2.2 数据库性能分析2.3 综合性能评估 在 Oracle 数据库的 AWR 报告中,Wait Classes by Total Wait Time 是评估数据库性能的重要部分。本篇文章主要是介绍指标参数…

基本数据类型和包装类型的区别、缓存池、自动拆箱装箱(面试题)

目录 1. 八种基本类型及对应包装类型 2. 基本类型和包装类型 区别 3. 自动拆箱装箱 3.1 自动装箱 3.2 自动拆箱 3.3 缓存池 4. 高频面试案例分析 1. 八种基本类型及对应包装类型 基本数据类型类型描述范围(指数形式)位数包装类型byte整型&#x…

Python酷库之旅-第三方库Pandas(221)

目录 一、用法精讲 1036、pandas.DatetimeIndex.to_pydatetime方法 1036-1、语法 1036-2、参数 1036-3、功能 1036-4、返回值 1036-5、说明 1036-6、用法 1036-6-1、数据准备 1036-6-2、代码示例 1036-6-3、结果输出 1037、pandas.DatetimeIndex.to_series方法 10…