当前位置: 首页 > news >正文

GO 启动 简单服务

1.创建项目

  • 打开 GoLand -> 新建项目
  • 选择 “Go Modules (vgo)” 项目类型
  • 填写项目路径(如 examp
  • le.com/myapi)
  • 完成创建

2.创建 main.go 文件并添加以下代码

package mainimport ("encoding/json""fmt""log""net/http""time"
)// 定义一个响应结构体
type Response struct {Status  string      `json:"status"`Message string      `json:"message"`Data    interface{} `json:"data"`
}// 用户模型
type User struct {ID        int       `json:"id"`Name      string    `json:"name"`Email     string    `json:"email"`CreatedAt time.Time `json:"created_at"`
}// 用户数据存储(模拟数据库)
var users = []User{{ID: 1, Name: "张三", Email: "zhangsan@example.com", CreatedAt: time.Now()},{ID: 2, Name: "李四", Email: "lisi@example.com", CreatedAt: time.Now().Add(-24 * time.Hour)},
}func main() {// 设置路由http.HandleFunc("/", homeHandler)http.HandleFunc("/api/users", usersHandler)http.HandleFunc("/api/users/", userByIDHandler)// 启动服务器port := ":8080"fmt.Printf("🚀 服务器运行中,访问地址: http://localhost%s\n", port)fmt.Println("👉 可用端点:")fmt.Printf(" - GET http://localhost%s/api/users\n", port)fmt.Printf(" - GET http://localhost%s/api/users/:id\n", port)fmt.Println("=========================================")err := http.ListenAndServe(port, nil)if err != nil {log.Fatalf("❌ 启动服务器失败: %v", err)}
}// 主页处理器
func homeHandler(w http.ResponseWriter, r *http.Request) {if r.URL.Path != "/" {http.NotFound(w, r)return}response := Response{Status:  "success",Message: "欢迎使用用户API服务",Data:    "请访问 /api/users 获取用户数据",}sendJSON(w, http.StatusOK, response)
}// 获取所有用户
func usersHandler(w http.ResponseWriter, r *http.Request) {if r.Method != "GET" {http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)return}response := Response{Status:  "success",Message: "用户数据获取成功",Data:    users,}sendJSON(w, http.StatusOK, response)
}// 按ID获取单个用户
func userByIDHandler(w http.ResponseWriter, r *http.Request) {if r.Method != "GET" {http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)return}// 解析URL中的IDid := r.URL.Path[len("/api/users/"):]var userID int_, err := fmt.Sscanf(id, "%d", &userID)if err != nil {http.Error(w, "Invalid user ID", http.StatusBadRequest)return}// 查找用户var found *Userfor _, u := range users {if u.ID == userID {found = &ubreak}}// 返回响应if found == nil {response := Response{Status:  "error",Message: "用户未找到",Data:    nil,}sendJSON(w, http.StatusNotFound, response)return}response := Response{Status:  "success",Message: "用户数据获取成功",Data:    found,}sendJSON(w, http.StatusOK, response)
}// 发送JSON响应
func sendJSON(w http.ResponseWriter, statusCode int, data interface{}) {w.Header().Set("Content-Type", "application/json")w.WriteHeader(statusCode)if err := json.NewEncoder(w).Encode(data); err != nil {log.Printf("❌ JSON编码失败: %v", err)http.Error(w, "Internal Server Error", http.StatusInternalServerError)}
}

3.启动服务

终端中输入以下代码执行

go run main.go

或者
点击 main函数 旁边绿色启动按钮
在这里插入图片描述

在这里插入图片描述

4.模拟调用

创建 api_test.http 文件

### 获取所有用户
GET http://localhost:8080/api/users### 按ID获取用户 - 有效ID
GET http://localhost:8080/api/users/1### 按ID获取用户 - 无效ID
GET http://localhost:8080/api/users/999### 访问主页
GET http://localhost:8080/

点击绿色按钮调用
在这里插入图片描述
调用成功
在这里插入图片描述

http://www.lryc.cn/news/584432.html

相关文章:

  • 前端项目集成husky + lint-staged + commitlint
  • 蓝桥云课 矩形切割-Java
  • AI 智能体:从辅助工具到自主决策者
  • AI测试革命:从智能缺陷检测到自愈式测试框架的工业实践
  • 数据提取之bs4(BeautifuSoup4)模块与Css选择器
  • Sigma-Aldrich细胞培养基础知识:细胞培养的安全注意事项
  • centos7 安装jenkins
  • 百度文心ERNIE4.5部署与性能白皮书:FastDeploy加速方案+全系列模型实测数据对比
  • Shader面试题100道之(61-80)
  • Django--01基本请求与响应流程
  • 个体户核定多地暂停,将不再享受核定征收?
  • 二分查找篇——搜索旋转排序数组【LeetCode】两次二分查找
  • 专题:2025供应链数智化与效率提升报告|附100+份报告PDF、原数据表汇总下载
  • 2025企业私有化知识库工具选型指南——标普智元深度解读
  • 多商户商城系统源码选型指南:开源 vs 定制,哪种更适合?
  • 第七讲:C++中的string类
  • [实战]调频(FM)和调幅(AM)信号生成(完整C语言实现)
  • java多线程环境下资源隔离机制ThreadLocal详解
  • 【C++】红黑树的底层思想 and 大厂面试常问
  • Web前端:table标签的用法与属性
  • 学习日记-spring-day45-7.10
  • 二分查找篇——搜索旋转排序数组【LeetCode】一次二分查找
  • LFU 缓存
  • iOS APP混合开发性能测试怎么做?页面卡顿、通信异常的工具组合实战
  • iOS Widget 开发-7:TimelineProvider 机制全解析:构建未来时间线
  • 快速上手ASP .NET Core 8与MongoDB整合
  • Mac 电脑crontab执行定时任务【Python 实战】
  • 【保姆级喂饭教程】idea中安装Conventional Commit插件
  • Wsl/InstallDistro/Service/RegisterDistro/CreateVm/HCS/E_INVALIDARG
  • Android ViewBinding 使用与封装教程​​