题目
如何创建一个简单的Go HTTP微服务?
信息
- 类型:问答
- 难度:⭐
考点
HTTP服务器创建,路由处理,基本错误处理
快速回答
创建一个简单的Go HTTP微服务需要以下步骤:
- 导入
net/http包 - 定义处理HTTP请求的处理函数
- 使用
http.HandleFunc注册路由 - 调用
http.ListenAndServe启动服务器 - 添加基本的错误处理
原理说明
Go语言通过net/http包提供HTTP服务能力。核心组件包括:
- HandlerFunc:处理HTTP请求的函数签名
- 路由注册:将URL路径映射到处理函数
- 服务器启动:监听指定端口并处理请求
代码示例
package main
import (
"fmt"
"net/http"
)
// 处理函数
greetHandler := func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, Microservice!")
}
func main() {
// 注册路由
http.HandleFunc("/greet", greetHandler)
// 启动服务器
fmt.Println("Server starting on :8080...")
if err := http.ListenAndServe(":8080", nil); err != nil {
fmt.Printf("Server failed: %v\n", err)
}
}最佳实践
- 使用
http.Error返回标准错误响应 - 为不同路由创建独立处理函数
- 添加
Content-Type头确保正确响应类型 - 在生产环境中使用
log替代fmt记录日志
常见错误
- 忘记调用
http.HandleFunc注册路由 - 处理函数未实现
http.ResponseWriter接口 - 端口冲突(如重复监听同一端口)
- 未处理
ListenAndServe返回的错误
扩展知识
- 路由库:进阶项目可使用
gorilla/mux或gin框架 - 中间件:通过函数链实现认证/日志等通用功能
- 优雅关闭:使用
http.Server的Shutdown方法 - 并发模型:Go为每个请求自动创建goroutine