GO学习记录——动态创建测试http接口

写前端程序时总是要等后台接口写完再联调,就思考了下能不能用热更新的套路,写一个可以动态创建http接口的后台程序。

不知道这算不算前端写后台的邪修方法。

1.在go工程根目录下创建files文件夹,里边存放接口需要返回的数据json串,保存为.json文件。

2.之后添加的每一个接口,保证url地址最后一个/后的内容和files文件夹下的json文件同名。

3.打开浏览器,在地址栏输入内容:

http://localhost:8080/api/app/testapi?arg=1

http://localhost:8080/api/app/testapi

http://localhost:8080/testapi?arg=1

这几种哪个都可以成功返回files/testapi.json文件内容,这样适配是为了保证前端的测试代码可以和生产代码保持一致。

我用前端写了测试代码,使用Get/Post方法都可以成功返回信息,没有URL参数解析功能,因为文件名不让使用?&等特殊符号。

4.以下为go代码,文件存放目录等可以根据需要自行提取配置。

go 复制代码
// 配置存放可下载文件路径,如果传参中不包含扩展名,自动添加.json后缀
func SettingDownloadFilePath() {
	// 处理所有请求
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		// 获取请求路径
		path := r.URL.Path
		LogInfo("=================url路径=" + path)
		// 如果是根路径,显示欢迎信息或返回404
		if path == "/" {
			helloHandler(w, r)
			return
		}

		// 获取路径中最后一个斜杠后的字符串(文件名)
		fileName := filepath.Base(path)
		LogInfo("%s", "========fileName="+fileName)
		// 如果文件名中没有扩展名,自动添加 .json 后缀
		downloadFileName := fileName
		if !strings.Contains(fileName, ".") {
			downloadFileName = fileName + ".json"
		}

		// 构建实际文件路径:files目录下的对应文件
		actualFilePath := "./files/" + downloadFileName

		// 检查文件是否存在
		if _, err := os.Stat(actualFilePath); os.IsNotExist(err) {
			http.Error(w, "File not found: "+fileName, http.StatusNotFound)
			return
		}

		// 设置响应头,强制浏览器下载文件
		w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=\"%s\"", downloadFileName))
		w.Header().Set("Content-Type", "application/octet-stream")

		// 提供文件
		http.ServeFile(w, r, actualFilePath)
	})
}

// @Summary      根目录测试连接
// @Description
// @Tags         tags1
// @Accept       json
// @Produce      json
// @Router       / [get]
func helloHandler(w http.ResponseWriter, r *http.Request) {
	LogInfo("访问路径:%s,来源:%s\n", r.URL.Path, r.RemoteAddr)
	// 编码 JSON 响应
	SendJSONResponse(w, true, http.StatusOK, "成功", "访问了根目录 Hello, World! 👋")
}
相关推荐
花酒锄作田2 天前
Gin 框架中的规范响应格式设计与实现
golang·gin
西岸行者2 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意2 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码2 天前
嵌入式学习路线
学习
毛小茛2 天前
计算机系统概论——校验码
学习
babe小鑫2 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
古译汉书2 天前
【IoT死磕系列】Day 7:只传8字节怎么控机械臂?学习工业控制 CANopen 的“对象字典”(附企业级源码)
数据结构·stm32·物联网·http
winfreedoms2 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下2 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。2 天前
2026.2.25监控学习
学习