用Golang标准库实现基础搜索接口:注册GET路由/search,解析q参数,校验空查询;内存模拟Article数据源并模糊匹配Title/Content;返回含Results和Total的JSON响应,设置正确Content-Type,启动服务测试。

用 Golang 实现基础搜索接口,核心是:定义路由、解析查询参数、执行搜索逻辑(如内存过滤或对接数据库)、返回结构化 JSON 响应。不依赖复杂框架也能快速跑通。
定义 HTTP 路由与请求处理
使用标准 net/http 即可,无需额外 Web 框架。为搜索接口注册一个 GET 路由,例如 /search,并提取 URL 查询参数(如 q=关键词)。
- 用 http.HandleFunc 绑定路径和处理函数
- 在 handler 中调用 r.URL.Query().Get("q") 获取搜索词
- 对空查询做校验,避免无效搜索
准备可搜索的数据源
初期可用内存切片模拟数据,便于验证流程。例如定义一个结构体切片,包含 ID、标题、内容等字段。
- 数据示例:[]Article{{ID: 1, Title: "Go 并发", Content: "goroutine 和 channel..."}}
- 支持简单字段匹配:检查 Title 或 Content 是否包含查询词(忽略大小写)
- 后续可替换为 SQL 查询(如 WHERE title LIKE ?)或集成 Elasticsearch
实现搜索逻辑与响应封装
遍历数据,筛选匹配项,构造统一响应结构。推荐返回带分页信息和结果列表的 JSON。
立即学习“go语言免费学习笔记(深入)”;
- 定义响应结构体,如 SearchResponse{Results: []Article{}, Total: 0}
- 用 strings.Contains(strings.ToLower(...), strings.ToLower(q)) 做基础模糊匹配
- 设置响应头:w.Header().Set("Content-Type", "application/json")
- 用 json.NewEncoder(w).Encode(resp) 输出结果
启动服务并测试接口
调用 http.ListenAndServe(":8080", nil) 启动服务,用 curl 或浏览器访问测试。
- 示例请求:curl "http://localhost:8080/search?q=go"
- 观察返回 JSON 是否含预期字段和数据
- 加入日志(如 log.Printf)辅助调试查询词和结果数量
基本上就这些。不复杂但容易忽略的是参数校验和响应格式一致性——这两点做好,接口就已具备生产可用雏形。










