[云原生] Go web工作流程
web工作流程
- Web服务器的工作原理可以简单地归纳为
- 客户机通过TCP/IP协议建立到服务器的TCP连接
- 客户端向服务器发送HTTP协议请求包,请求服务器里的资源文档
- 服务器向客户机发送HTTP协议应答包,如果请求的资源包含有动态语言的内容,那么服务器会调用动态语言的解释引擎负责处理“动态内容”,并将处理得到的数据返回给客户端
- 客户机与服务器断开。由客户端解释HTML文档,在客户端屏幕上渲染图形结果
HTTP协议
-
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,它详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议
-
HTTP协议通常承载于TCP协议之上
talk is cheap , show me the code
package mainimport ("fmt""io/ioutil""log""net/http"
)func main() {//http://127.0.0.1:8000/go// 单独写回调函数http.HandleFunc("/go", myHandler)// addr:监听的地址// handler:回调函数http.ListenAndServe("127.0.0.1:8000", nil)
}// handler函数
func myHandler(w http.ResponseWriter, r *http.Request) {fmt.Println(r.RemoteAddr, "连接成功")// 请求方式:GET POST DELETE PUT UPDATEfmt.Println("method:", r.Method)// /gofmt.Println("url:", r.URL.Path)fmt.Println("header:", r.Header)fmt.Println("body:", r.Body)// 回复switch r.Method {case "GET":{w.Write([]byte("get"))}case "POST":{// 读取body内容content, err := ioutil.ReadAll(r.Body)if err != nil {log.Println("read post body occurs error: ", err)}fmt.Println("post body:", string(content))w.Write([]byte("post"))}default:{w.Write([]byte(r.Method))}}fmt.Println("end---")
}
package mainimport ("encoding/json""fmt""io""log""net/http""strings"
)type Data struct {Name string `json:"name"`Age int8 `json:"age"`
}func main() {//resp, _ := http.Get("http://www.baidu.com")//fmt.Println(resp)resp, _ := http.Get("http://127.0.0.1:8000/go")ResponseHandler(resp)fmt.Println("----")data := &Data{Name: "hello",Age: 18,}// 转换成json格式data_json, err := json.Marshal(data)if err != nil {log.Println("json.Marshaler error: ", err)}fmt.Println(string(data_json))resp, _ = http.Post("http://127.0.0.1:8000/go", "application/json", strings.NewReader(string(data_json)))ResponseHandler(resp)
}func ResponseHandler(resp *http.Response) {defer resp.Body.Close()// 200 OKfmt.Println(resp.Status)fmt.Println(resp.Header)buf := make([]byte, 1024)for {// 接收服务端信息n, err := resp.Body.Read(buf)if err != nil && err != io.EOF {fmt.Println(err)return} else {fmt.Println("读取完毕")res := string(buf[:n])fmt.Println(res)break}}
}
结果
> go run .\server.go
127.0.0.1:54856 连接成功
method: GET
url: /go
header: map[Accept-Encoding:[gzip] User-Agent:[Go-http-client/1.1]]
body: {}
end---
127.0.0.1:54856 连接成功
method: POST
url: /go
header: map[Accept-Encoding:[gzip] Content-Length:[25] Content-Type:[application/json] User-Agent:[Go-http-client/1.1]]
body: &{0xc0000b6048 <nil> <nil> false true {0 0} false false false 0x475080}
post body: {"name":"hello","age":18}
end---
> go run .\client.go
200 OK
map[Content-Length:[3] Content-Type:[text/plain; charset=utf-8] Date:[Mon, 25 Apr 2022 17:17:31 GMT]]
读取完毕
get
----
{"name":"hello","age":18}
200 OK
map[Content-Length:[4] Content-Type:[text/plain; charset=utf-8] Date:[Mon, 25 Apr 2022 17:17:31 GMT]]
读取完毕
post
http handler的格式模板
// HandleFunc registers the handler function for the given pattern
// in the DefaultServeMux.
// The documentation for ServeMux explains how patterns are matched.
func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) {DefaultServeMux.HandleFunc(pattern, handler)
}
相关文章:
[云原生] Go web工作流程
web工作流程 Web服务器的工作原理可以简单地归纳为 客户机通过TCP/IP协议建立到服务器的TCP连接客户端向服务器发送HTTP协议请求包,请求服务器里的资源文档服务器向客户机发送HTTP协议应答包,如果请求的资源包含有动态语言的内容,那么服务器…...
【PostgreSQL】约束-主键
【PostgreSQL】约束链接 检查 唯一 主键 外键 排他 主键 主键(Primary Key)是数据库表中用于唯一标识每一行记录的字段。主键具有以下特点: 唯一性:每个主键值在表中是唯一的,不允许出现重复值。非空性:…...
IDEA 控制台中文乱码问题解决方法(UTF-8 编码)
设置 IDEA 编码格式 1:打开 IntelliJ IDEA>File>Setting>Editor>File Encodings,将 Global Encoding、Project Encoding、Default encodeing for properties files 这三项都设置成 UTF-8 2:将 vm option 参数改为: -…...
ssm基于BS的仓库在线管理系统的设计与实现论文
摘 要 如今的时代,是有史以来最好的时代,随着计算机的发展到现在的移动终端的发展,国内目前信息技术已经在世界上遥遥领先,让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法&#x…...
鸿蒙HarmonyOs:为什么不支持热更新?
学习了一段时间的鸿蒙开发,发现鸿蒙开发还是比较简单的,今天突然心血来潮,研究了一下鸿蒙热更新,最终得出的结论是鸿蒙暂时不支持热更新。 鸿蒙app开发主要是利用的ArkTs语言,ArkTs又是基于TypeScript语言的࿰…...
修改 Ubuntu 的配置
目录 一、修改地址 1. 修改本机IP 二、修改网关 1. 查看网关地址 2. 设置默认网关 三、重启网络 1. 重启网络 2. 刷新网络 四、修改主机名 1. 查看主机名 2. 修改主机名 一、修改地址 1. 修改本机IP sudo ifconfig en…...
虹科方案|从困境到突破:TigoLeap方案引领数据采集与优化
导读:在数字化工厂和智能制造的时代,数据已经成为优化机器和流程的关键。然而,如何高效地收集和处理这些数据,特别是在开发、部署和生产阶段,仍是企业面临的一大挑战。虹科TigoLeap平台,作为一款引领行业变…...
【教学类-43-02】20231226 九宫格数独2.0(n=9)(ChatGPT AI对话大师生成 回溯算法)
作品展示: 背景需求: 大4班20号说:我不会做这种(九宫格),我做的是小格子的, 他把手工纸翻过来,在反面自己画了矩阵格子。向我展示: “我会做这种!” 原来他…...
麒麟Kylin服务器版-破解root密码
一、单用户模式修改root密码 1.重启服务器系统后,将光标移动到第二项,按【e】键进入用户登录页面。 2.在【username】下方所在行输入root名称,【password】下方所在行输入密码Kylin123123后,进入编辑模式。代码如下: …...
cnPuTTY 0.80.0.1—PuTTY Release 0.80中文版本简单说明~~
2023-12-18 官方发布了PuTTY 0.80本次发布主要是针对Terrapin攻击(CVE-2023-48795)的修改发布。 更多详细的内容请查看PuTTY Change Log。 有关Terrapin攻击可用简单参考:警告!!!Terrapin攻击(CVE-2023-48795)~~~ 为了缓解此漏洞…...
向爬虫而生---Redis 拓宽篇1 < pipeline传输效率>
前言: 都知道,Redis是一款高效的内存数据库;每条命令都能很快响应,但是如果我们把服务器布在网络上,每次一个命令来回传送也是需要花费时间的; pipeline传输技术则是进一步提高Redis的性能和传输效率的一种方法。 正文: pipeline与普通命令发送方式的区别 Pipeline是一种机制&…...
Unity Hub 无法激活许可证
烦死了~ 😵💫 卸载UnityHub, 安装旧版本👈激活许可证, 如果出现旧版本无法识别Editor的情况需要卸载了再装最新版本的UnityHub...
数据分析求职-如何准备
今天咱们来聊一聊数据分析岗位求职到底需要准备什么?什么时间准备?该如何准备? 1. 求职时间轴 上图很清楚地把求职时间轴展示出来了,重复的话也不多说了,有两点想和同学们重点提下: 1)一定一定…...
新手能掌握 PyTorch 的填充技术:深入理解反射、复制、零值和常数填充
目录 torch.nn子模块详解 nn.ReflectionPad1d 参数说明: 形状(Shape): 使用示例: 注意事项: nn.ReflectionPad2d 参数说明: 形状(Shape): 使用示例…...
地震烈度速报与预警工程成功案例的经验分享 | TDengine 技术培训班第一期成功落地
近日,涛思数据在成都开设了“国家地震烈度速报与预警工程数据库 TDengine、消息中间件 TMQ 技术培训班”,这次培训活动共分为三期,而本次活动是第一期。其目标是帮助参与者深入了解 TDengine 和 TMQ 的技术特点和应用场景,并学习如…...
集群部署篇--Redis 集群动态伸缩
文章目录 前言一、redis 节点的添加1.1 redis 的实例部署:1.2 redis 节点添加:1.3 槽位分配:1.4 添加从节点: 二、redis 节点的减少2.1 移除主节点2.1.1 迁移槽位2.1.1 删除节点: 三、redis 删除节点的重新加入3.1 加入…...
excel中解决多行文本自动调整行高后打印预览还是显示不全情况
注意:此方法对于多行合并后单元格行高调整不适用,需要手动调整,如大家有简便方法,欢迎评论。 一、调整表格为自动调整行高 1)点击此处全选表格 2)在第一行序号单元格的下端,鼠标成黑十字时&am…...
策略模式+责任链模式配合Nacos实现参数校验链
1、业务场景 在SpringBoot项目中,针对接收的参数信息,根据需求要进行以下校验: 校验客户的apikey是否合法;校验请求的ip地址是否是白名单;校验短信的签名;校验短信的模板;校验手机号的格式合法…...
‘react-native‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
原因:没有下载react-native 解决下载react-native npm i -g react-native-cli...
c语言:求最小公倍数|练习题
一、题目 输入两个数,求两数的最小公倍数。 如图: 二、思路分析 1、先知道两个数里的最小值(比如:9和6,取6) 2、用2到6,5个数,同时除以9和6,得最小公约数:3 3、用9除33,6除32。得最小…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
