golang之net/http模块学习
文章目录
- 开启服务
- 开启访问静态文件
- 获取现在时间
- 按时间创建一个空的json文件
- 按时间创建一个固定值的json文件
- 跨域请求处理
- 输出是json
开启服务
package mainimport ("fmt""net/http"
)//路由
func handler(w http.ResponseWriter, r *http.Request){fmt.Fprintf(w, "hello World!")
}func main(){//路由http.HandleFunc("/", handler)//开启服务http.ListenAndServe(":8091", nil) //port:8091(自定义,注意:要是空闲端口)
}
#启动服务
go run main.go
这样本地的8091端口就可以访问了
开启访问静态文件
我们这里拿video来举例

package mainimport ("fmt""net/http"
)func main(){//静态文件访问fs := http.FileServer(http.Dir("./assets"))http.Handle("/static/", http.StripPrefix("/static/", fs))//开启服务http.ListenAndServe(":8091", nil)
}
按照图上的访问路径(http://localhost:8091/static/video/20231204-134423.mp4)
获取现在时间
package mainimport ("fmt""time"
)func main(){currentTime := time.Now()fmt.Println("当前的时间为",currentTime)
}
因为currentTime是
time.Time类型所以要想页面输出要进行字符串转换
//获取时间
func getNowTime(w http.ResponseWriter, r *http.Request){currentTime := time.Now()timeString := currentTime.Format("2006-01-02 15:04:05")//"2006-01-02 15:04:05"只是时间格式化字符串格式fmt.Fprintf(w,timeString)
}
至于这个函数上面命名也是如此,就当是
net/http路由服务的固定格式便好
注意: Golang函数首字符大写代表着公开(public)小写代表着私有(private)
按时间创建一个空的json文件
package mainimport ("fmt""time"
// "encoding/json""os"
)func CreateFileNil(){currentTime := GetTime()fileName := currentTime.Format("2006-01-02_15-04-05") + ".json"file,err := os.Create("./assets/json/"+fileName)if err != nil {fmt.Println("JSON编码失败:", err)return}defer file.Close() //defer:表示函数的最后执行(这里是确保最后文件是关闭的)
}func main(){CreateFileNil()
}
按时间创建一个固定值的json文件
package mainimport ("fmt""time""encoding/json""os"
)type Person struct {Name stringAge int
}
//创建一个固定值的json文件
func CreateFileGuDin(){currentTime := GetTime()fileName := currentTime.Format("2006-01-02_15-04-05") + ".json"file,err := os.Create("./assets/json/"+fileName)if err != nil {fmt.Println("JSON编码失败:", err)return}defer file.Close()person := Person{Name: "Alice", Age: 25}jsonData, err := json.Marshal(person)if err != nil {fmt.Println("JSON编码失败:", err)return}_, err = file.Write(jsonData)if err != nil {fmt.Println("写入文件失败:", err)return}fmt.Println("JSON文件创建成功:", fileName)
}func main(){CreateFileGuDin()
}
跨域请求处理
package mainimport ("fmt""net/http"
)//路由
func handler(w http.ResponseWriter, r *http.Request){fmt.Fprintf(w, "hello World!")
}func main(){//创建一个处理跨域请求的处理器函数corsHandler := func(h http.Handler) http.Handler {return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {// 设置允许跨域的域名w.Header().Set("Access-Control-Allow-Origin", "*")// 允许的请求方法w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")// 允许的请求头w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization")// 如果是预检请求,直接返回if r.Method == "OPTIONS" {return}h.ServeHTTP(w, r)})}//路由http.Handle("/", corsHandler(http.HandlerFunc(handler)))//开启服务http.ListenAndServe(":8091", nil)
}
输出是json
package mainimport ("fmt""net/http""encoding/json"
)type FileDetail struct{NowTime string `json:"now_time"`FileName string `json:"file_name"`
}func func_name1(w http.ResponseWriter, r *http.Request){responseData := FileDetail {NowTime:"2023_12_04_22_51_30.json",FileName:"http://"+local+":" + port + "/static/video/20231204-19.mp4"}w.Header().Set("Content-Type", "application/json")w.WriteHeader(http.StatusOK)json.NewEncoder(w).Encode(responseData)
}func main(){//创建一个处理跨域请求的处理器函数corsHandler := func(h http.Handler) http.Handler {return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {// 设置允许跨域的域名w.Header().Set("Access-Control-Allow-Origin", "*")// 允许的请求方法w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")// 允许的请求头w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization")// 如果是预检请求,直接返回if r.Method == "OPTIONS" {return}h.ServeHTTP(w, r)})}http.Handle("/test", corsHandler(http.HandlerFunc(func_name1)))//开启服务http.ListenAndServe(":8091", nil)
}相关文章:
golang之net/http模块学习
文章目录 开启服务开启访问静态文件获取现在时间按时间创建一个空的json文件按时间创建一个固定值的json文件 跨域请求处理输出是json 开启服务 package mainimport ("fmt""net/http" )//路由 func handler(w http.ResponseWriter, r *http.Request){fmt.…...
Python中format函数用法
嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 format优点 format是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点。 1.不需要理会数据类型的问题&#…...
Android 断点调试
Android 调试 https://developer.android.google.cn/studio/debug?hlzh-cn 调试自己写的代码(不在Android源码) 点击 Attach debugger to Android process 图标 需要在添加断点界面手动输入函数名 但也可以不手动,有个技巧可以new 空proje…...
对抗神经网络 CGAN实战详解 完整数据代码可直接运行
代码视频讲解: 中文核心项目:对抗神经网络 CGAN实战详解 完整代码数据可直接运行_哔哩哔哩_bilibili 运行图: 完整代码: from keras.layers import Input, Dense, Reshape, Flatten, Dropout, multiply from keras.layers import BatchNormalization, Activation, Embedd…...
LeetCode417. Pacific Atlantic Water Flow
文章目录 一、题目二、题解 一、题目 There is an m x n rectangular island that borders both the Pacific Ocean and Atlantic Ocean. The Pacific Ocean touches the island’s left and top edges, and the Atlantic Ocean touches the island’s right and bottom edges…...
Python字符串模糊匹配工具:TheFuzz 库详解
更多资料获取 📚 个人网站:ipengtao.com 在处理文本数据时,常常需要进行模糊字符串匹配来找到相似的字符串。Python的 TheFuzz 库提供了强大的方法用于解决这类问题。本文将深入介绍 TheFuzz 库,探讨其基本概念、常用方法和示例代…...
Golang中WebSocket和WSS的支持
引言 WebSocket是一种在单个TCP连接上进行全双工通信的协议,它为实时通信提供了一种简单而强大的方式。而WSS(WebSocket Secure)是一种通过加密的方式使用WebSocket的协议,可以在安全的传输层上进行通信。本文将探讨Golang中WebS…...
亚马逊云科技re:Invent大会,助力安全构建规模化生成式AI应用
2023亚马逊云科技re:Invent全球大会进入第三天,亚马逊云科技数据和人工智能副总裁Swami Sivasubramanian博士在周三的主题演讲中,为大家带来了关于亚马逊云科技生成式AI的最新能力、面向生成式AI时代的数据战略以及借助生成式AI应用提高生产效率的精彩分…...
价差后的几种方向,澳福如何操作才能盈利
在价差出现时,澳福认为会出现以下几种方向。 昂贵资产的贬值和便宜资产的平行升值。昂贵的资产贬值,而便宜的资产保持不变。昂贵资产的贬值和便宜资产的平行贬值,但昂贵资产的贬值速度更快,超过便宜资产。更贵的一对的进一步升值和…...
【Java】类和对象之超级详细的总结!!!
文章目录 前言1. 什么是面向对象?1.2面向过程和面向对象 2.类的定义和使用2.1什么是类?2.2类的定义格式2.3类的实例化2.3.1什么是实例化2.3.2类和对象的说明 3.this引用3.1为什么会有this3.2this的含义与性质3.3this的特性 4.构造方法4.1构造方法的概念4…...
机器学习的复习笔记3-回归的细谈
一、回归的细分 机器学习中的回归问题是一种用于预测连续型输出变量的任务。回归问题的类型和特点如下: 线性回归(Linear Regression):线性回归是回归问题中最简单的一种方法。它假设自变量与因变量之间存在线性关系,…...
Git常用命令#切换分支
要在 Git 中切换分支,你可以使用 git checkout 命令。 a.创建新分支并切换到该分支 如果你想要创建一个新分支并立即切换到该分支,可以使用以下命令: git checkout -b 新分支名这会创建一个名为 新分支名 的新分支,并将你的工作目…...
【qml入门教程系列】:qml property使用介绍
作者:令狐掌门 技术交流QQ群:675120140 博客地址:https://mingshiqiang.blog.csdn.net/ 文章目录 属性的定义property基本用法属性变更事件通知属性绑定属性别名只读属性默认属性 default property访问和修改属性方式1:使用setProperty方法方式2:使用QQmlContext设置属性自定…...
pbootcms建站
pbootcms建站 一、下载pbootcms二、安装1、进入宝塔面在网站栏,新建站点,将该址里面文件全部清再将下载的pbootcms上传至该地址。 三、修改关联数据库1、在根目录下/config打开database.php照如下修改这里我使用mysqli数据库。修改并使用自已创建的数据库…...
Spring的事务传播行为
文章目录 说一下Spring的事务传播行为 今天来和大家聊聊spring中使用的事务传播行为, 说一下Spring的事务传播行为 spring事务的传播行为说的是,当多个事务同时存在的时候,spring如何处理这些事务的行为。 ① PROPAGATION_REQUIRED…...
04_网络编程
网络编程 什么是网络编程 可以让设备中的程序与网络上其他设备中的程序进行数据交互(实现网络通信的) java.net.* 包下提供了网络编程的解决方案 通信的基本架构 CS 架构(Client 客户端 / Server 服务端)BS 架构(…...
【五分钟】熟练使用numpy.cumsum()函数(干货!!!)
引言 numpy.cumsum()函数用于计算输入数组的累积和。当输入是多维数组时,numpy.cumsum()函数可以沿着指定轴计算累积和。 计算一维数组的累计和 代码如下: # 计算一维数组的累计和 tmp_array np.ones((4,), dtypenp.uint8) # [1, 1, 1, 1] print(&…...
由11月27日滴滴崩溃到近两个月国内互联网产品接二连三崩溃引发的感想
文章目录 知乎文分析微信聊天截图微信公众号 滴滴技术 发文k8s 官方文档滴滴官方微博账号 近两个月国内互联网产品“崩溃”事件2023-10-23 语雀崩溃2023-11-12 阿里云崩溃2023-11-27 滴滴崩溃2023-12-03 腾讯视频崩溃总结 我的感想 知乎文分析 最近连续加班,打车较…...
Python按要求从多个txt文本中提取指定数据
基本想法 遍历文件夹并从中找到文件名称符合我们需求的多个.txt格式文本文件,并从每一个文本文件中,找到我们需要的指定数据,最后得到所有文本文件中我们需要的数据的集合 举例 如现有名为file一个文件夹,里面含有大量的.txt格…...
DFT新手教程:VASP中ISIF取值设置
新手初学VASP计算时首先接触到的就是结构优化的计算任务。 在结构优化中,INCAR中的关键参数包括 IBRION ,NSW,ISIF,EDIFF和EDIFFG 各个参数均可在vaspwiki查到可设置的参数以及该参数所具有的设置的含义。 https://www.vasp.at/…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...
数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...
[QMT量化交易小白入门]-六十二、ETF轮动中简单的评分算法如何获取历史年化收益32.7%
本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。 QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。 文章目录 相关阅读1. 策略概述2. 趋势评分模块3 代码解析4 木头…...
LTR-381RGB-01RGB+环境光检测应用场景及客户类型主要有哪些?
RGB环境光检测 功能,在应用场景及客户类型: 1. 可应用的儿童玩具类型 (1) 智能互动玩具 功能:通过检测环境光或物体颜色触发互动(如颜色识别积木、光感音乐盒)。 客户参考: LEGO(乐高&#x…...
GC1808:高性能音频ADC的卓越之选
在音频处理领域,高质量的音频模数转换器(ADC)是实现精准音频数字化的关键。GC1808,一款96kHz、24bit立体声音频ADC,以其卓越的性能和高性价比脱颖而出,成为众多音频设备制造商的理想选择。 GC1808集成了64倍…...
VASP软件在第一性原理计算中的应用-测试GO
VASP软件在第一性原理计算中的应用 VASP是由维也纳大学Hafner小组开发的一款功能强大的第一性原理计算软件,广泛应用于材料科学、凝聚态物理、化学和纳米技术等领域。 VASP的核心功能与应用 1. 电子结构计算 VASP最突出的功能是进行高精度的电子结构计算ÿ…...
