Go语言HTTP服务器开发:GET与POST接口实现详解

周叙
周叙
发布时间:2026-10-14| 4人浏览过
原创

本文介绍如何使用Go标准库net/http包搭建简易HTTP服务器,实现GET和POST接口的参数接收与JSON响应。通过代码示例展示路由注册、表单解析、基础认证逻辑及JSON序列化返回数据的完整流程,帮助快速理解Go语言Web服务开发的基本结构。

准备条件

在开始编写代码之前,请确保已安装Go语言环境。Go的 net/http 包是标准库的一部分,无需额外安装依赖即可使用。我们将构建一个基础的Web Server,监听指定IP和端口,处理特定路径的HTTP请求。

真实操作顺序

第1步:定义数据结构和辅助函数

目的: 定义用于返回给客户端的标准JSON响应结构,便于统一接口格式。
动作: 创建一个名为 BaseJsonBean 的结构体,包含错误码(Code)、数据(Data)和提示信息(Message)字段,并编写初始化该结构体的工厂函数。

package webserver

type BaseJsonBean struct {
	Code    int        `json:"code"`
	Data    interface{} `json:"data"`
	Message string     `json:"message"`
}

func NewBaseJsonBean() *BaseJsonBean {
	return &BaseJsonBean{}
}

第2步:实现核心处理逻辑

目的: 编写HTTP Handler函数,负责解析请求参数、验证业务逻辑并返回JSON响应。
入口: 定义函数 loginTask(w http.ResponseWriter, req *http.Request)。
动作:

  1. 解析参数: 调用 req.ParseForm() 解析URL查询参数或POST表单数据。
  2. 获取数据: 从 req.Form 中获取用户名和密码参数。注意Go中 req.Form[key] 返回的是字符串切片,需取第一个元素。
  3. 验证逻辑: 检查是否传入了必要的参数(如 userName 和 password),若缺失则返回非法访问提示。
  4. 业务判断: 此处以简单的硬编码用户 "zhangsan" 和密码 "123456" 为例进行演示登录成功与否的状态码设置。
  5. 返回结果: 将填充好状态的数据结构序列化为JSON字节流,并通过 w.Write() 或 fmt.Fprint() 发送回客户端。
复制代码 代码如下:
func loginTask(w http.ResponseWriter, req *http.Request) { // 模拟延时 time.Sleep(time.Second * 2) // 获取客户端通过GET/POST方式传递的参数 req.ParseForm() param_userName, found1 := req.Form["userName"] param_password, found2 := req.Form["password"] if !(found1 && found2) { fmt.Fprint(w, "请勿非法访问") return } result := NewBaseJsonBean() userName := param_userName[0] password := param_password[0] s := "userName:" + userName + ",password:" + password fmt.Println(s) if userName == "zhangsan" && password == "123456" { result.Code = 100 result.Message = "登录成功" } else { result.Code = 101 result.Message = "用户名或密码不正确" } // 向客户端返回JSON数据 bytes, _ := json.Marshal(result) fmt.Fprint(w, string(bytes)) }

第3步:启动HTTP服务器

目的: 将处理函数挂载到具体的URL路径,并让服务器开始监听网络请求。
入口: 定义主服务函数 WebServerBase。
重要参数: 监听地址 "192.168.1.27:8081",可根据实际需求修改为 ":8080" 监听所有网卡或指定其他端口。
动作:

  1. 使用 http.HandleFunc("/login", loginTask) 将 /login 路径映射到我们的处理函数。
  2. 调用 http.ListenAndServe 启动阻塞式服务,传入监听地址和Nil路由器(表示使用DefaultServeMux)。
  3. 处理可能的启动错误。
复制代码 代码如下:
package webserver import ( "encoding/json" "fmt" "net/http" "time" ) func WebServerBase() { fmt.Println("This is webserver base!") // 第一个参数为客户端发起http请求时的接口名,第二个参数是一个func,负责处理这个请求。 http.HandleFunc("/login", loginTask) // 服务器要监听的主机地址和端口号 err := http.ListenAndServe("192.168.1.27:8081", nil) if err != nil { fmt.Println("ListenAndServe error: ", err.Error()) } } // 请将上面的loginTask函数代码合并至此文件中才能编译运行

完成判断

当程序成功打印 This is webserver base! 后,即表示服务器已在后台运行。此时可以通过浏览器或Postman等工具访问 http://192.168.1.27:8081/login?userName=zhangsan&password=123456 (GET方式)或使用POST表单提交相同参数,若能正常收到JSON格式的响应且状态码正确,则说明接口开发成功。

简要总结

以上就是Go语言服务器开发实现最简单HTTP的GET与POST接口的详细内容,更多关于Go语言Web开发的基础知识请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。