脚本 手机跑.简易go服务器

termux 运行即可

Go 复制代码
package main

import (
	"log"      // 1. 导入日志包
	"net/http" // 2. 导入HTTP服务包
)

// 3. 主函数 - 程序入口点
func main() {
	// 4. 创建文件服务器,服务当前目录
	fs := http.FileServer(http.Dir("."))
	
	// 5. 注册路由处理器,使用logRequest中间件包装
	http.Handle("/", logRequest(fs))

	// 6. 打印服务启动信息
	log.Println("Listening on :8080 ...")
	
	// 7. 启动HTTP服务器,监听8080端口
	log.Fatal(http.ListenAndServe(":8080", nil))
}

// 8. logRequest 中间件函数 - 记录每个HTTP请求
// 包装下一个处理器,在请求完成后记录请求方法和路径
func logRequest(next http.Handler) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		// 9. 创建自定义的ResponseWriter来捕获状态码
		lrw := &loggingResponseWriter{ResponseWriter: w, statusCode: 200}
		
		// 10. 调用下一个处理器
		next.ServeHTTP(lrw, r)
		
		// 11. 记录请求信息:方法、路径、状态码
		log.Printf("%s %s %d", r.Method, r.URL.Path, lrw.statusCode)
	})
}

// 12. loggingResponseWriter 结构体 - 自定义响应写入器
// 用于捕获HTTP响应的状态码
type loggingResponseWriter struct {
	http.ResponseWriter // 13. 嵌入标准ResponseWriter
	statusCode int       // 14. 存储响应状态码
}

// 15. WriteHeader 方法 - 重写写入响应头的方法
// 在写入状态码时同时记录到结构体中
func (lrw *loggingResponseWriter) WriteHeader(code int) {
	lrw.statusCode = code // 16. 保存状态码
	lrw.ResponseWriter.WriteHeader(code) // 17. 调用原始方法
}
相关推荐
X1A0RAN3 小时前
解决Pycharm中部分文件或文件夹被隐藏不展示问题
ide·python·pycharm
MomentYY3 小时前
第 3 篇:让 Agent 学会分工,LangGraph 构建多 Agent系统
人工智能·python·agent
程序员Jelena3 小时前
Python 代码是什么?—— 从字节到执行的完整解析
python
测试员周周3 小时前
【Appium 系列】第13节-混合测试执行器 — API + UI 的协同执行
开发语言·人工智能·python·功能测试·ui·appium·pytest
用户8356290780514 小时前
Python 操作 PowerPoint OLE 对象
后端·python
小江的记录本4 小时前
【Java基础】Java 8-21新特性:JDK21 LTS:虚拟线程、模式匹配switch、结构化并发、序列集合(附《思维导图》+《面试高频考点清单》)
java·数据库·python·mysql·spring·面试·maven
张登杰踩5 小时前
DINOv2 with Registers 系列模型详解:Giant 版本规格、Register Token 机制与使用指南
python·numpy
XMYX-05 小时前
37 - Go env 环境变量:配置管理与运行时控制
开发语言·golang
隐于花海,等待花开5 小时前
9. Python 文件与输入输出 深度解析
python
小江的记录本6 小时前
【Java基础】反射与注解:核心原理、自定义注解、注解解析方式(附《思维导图》+《面试高频考点清单》)
java·数据结构·python·mysql·spring·面试·maven