章节

17.3 HTTP 服务端

本篇学习 Go 标准库 net/http 的服务端写法,并能创建一个基础 HTTP 接口。

HTTP 服务端

概念说明

Go 标准库 net/http 可以直接编写 HTTP 服务。
最基础的流程是注册路由处理函数,然后启动监听端口。

处理函数接收两个参数:
http.ResponseWriter 用于写响应,*http.Request 用于读取请求信息。

语法/规则

  1. 使用 http.HandleFunc(path, handler) 注册处理函数。
  2. handler 签名是 func(w http.ResponseWriter, r *http.Request)
  3. 使用 fmt.Fprintln(w, "...")w.Write 写响应。
  4. 使用 http.ListenAndServe(address, nil) 启动服务。
  5. 真实项目中要处理错误返回值。

HTTP 服务端示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
package main

import (
	"fmt"
	"net/http"
)

func helloHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintln(w, "hello http") // 把响应写回客户端
}

func main() {
	http.HandleFunc("/hello", helloHandler) // 注册路由处理函数
	fmt.Println("http server listen on :8080")

	err := http.ListenAndServe(":8080", nil)
	if err != nil {
		panic(err)
	}
}

访问地址:

1
http://127.0.0.1:8080/hello

响应结果:

1
hello http

常见错误

  1. 路由路径没有以 / 开头,导致注册路径不符合预期。
  2. 忘记处理 ListenAndServe 返回的错误。
  3. 服务端启动后端口被占用,导致监听失败。
  4. 在处理函数里执行耗时阻塞逻辑,影响请求响应速度。
本文禁止转载
使用 Hugo 构建
主题 StackJimmy 设计 由 Hobin 魔改
最近构建时间:2026-04-17 19:07:48 CST
载入天数...载入时分秒...
发表了 1 篇文章 · 发表了 152 篇笔记 · 总计 18 万 0 千字