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

21 | 全面测试项目功能

提示:

  • 所有体系课见专栏:Go 项目开发极速入门实战课;
  • 欢迎加入 云原生 AI 实战 星球,12+ 高质量体系课、20+ 高质量实战项目助你在 AI 时代建立技术竞争力(聚焦于 Go、云原生、AI Infra);
  • 本节课最终源码位于 fastgo 项目的 feature/s17 分支。

编译并运行

执行以下命令编译并运行 fg-apiserver:

$ ./build.sh
$ _output/fg-apiserver -c configs/fg-apiserver.yaml

用户功能测试

这里,我们通过 curl 命令来测试用户相关的 API 接口是否可以正常工作。以下是待测试的接口:

  • 创建用户;
  • 列出所有用户。

创建 colin 用户

$ curl -XPOST -H'Content-Type: application/json' http://127.0.0.1:6666/v1/users  -d '{"username":"fastgotest","password":"fastgotest1234","nickname":"colin404","email":"colin404@foxmail.com","phone":"18188881111"}'
{"userID":"user-eni0mm"}

登录

在调用其他接口时,需要先登录获取 Token,再使用 Token 访问 API 接口。为了方便后面的调用,通过以下命令将 Login 接口返回的 Token 保存在 token 变量中:

 $ token=$(curl -s -XPOST -H"Content-Type: application/json" http://127.0.0.1:6666/login -d'{"username":"fastgotest","password":"fastgotest1234"}'|jq -r .token)

列出所有用户

使用 token 变量,方位用户列表接口:

$ curl -s -XGET -H"Authorization: Bearer ${token}" http://127.0.0.1:6666/v1/users|jq
{
  "totalCount": 1,
  "users": [
    {
      "userID": "user-eni0mm",
      "username": "fastgotest",
      "nickname": "colin404",
      "email": "colin404@foxmail.com",
      "phone": "18188881111",
      "postCount": 0,
      "createdAt": "2025-03-09T15:54:07+08:00",
      "updatedAt": "2025-03-09T15:54:07+08:00"
    }
  ]
}

获取 colin 用户的详细信息

$ curl -s -XGET -H"Authorization: Bearer ${token}" http://127.0.0.1:6666/v1/users/user-eni0mm|jq
{
  "user": {
    "userID": "user-eni0mm",
    "username": "fastgotest",
    "nickname": "colin404",
    "email": "colin404@foxmail.com",
    "phone": "18188881111",
    "postCount": 0,
    "createdAt": "2025-03-09T15:54:07+08:00",
    "updatedAt": "2025-03-09T15:54:07+08:00"
  }
}

修改 colin 用户

$ curl -XPUT -H'Content-Type: application/json' -H"Authorization: Bearer ${token}" http://127.0.0.1:6666/v1/users/user-eni0mm  -d '{"nickname":"colin505"}'
{}

删除 colin 用户

$ curl -XDELETE -H"Authorization: Bearer ${token}" http://127.0.0.1:6666/v1/users/user-eni0mm
{}

博客功能测试

创建测试用户 posttest 用户

$ curl -XPOST -H'Content-Type: application/json' http://127.0.0.1:6666/v1/users  -d '{"username":"posttest","password":"posttest1234","nickname":"colin404","email":"colin404@foxmail.com","phone":"18188880000"}'
{"userID":"user-v1eok4"}

posttest 登录 fastgo

 $ token=$(curl -s -XPOST -H"Content-Type: application/json" http://127.0.0.1:6666/login -d'{"username":"posttest","password":"posttest1234"}'|jq -r .token)

创建一个博客

$ curl -XPOST -H"Content-Type: application/json" -H"Authorization: Bearer ${token}" http://127.0.0.1:6666/v1/posts -d'{"title":"installation","content":"installation."}'
{"postID":"post-tq7ien"}

列出所有博客

$ curl -s -XGET -H"Authorization: Bearer ${token}" http://127.0.0.1:6666/v1/posts|jq
{
  "total_count": 1,
  "posts": [
    {
      "postID": "post-tq7ien",
      "userID": "user-v1eok4",
      "title": "installation",
      "content": "installation.",
      "createdAt": "2025-03-10T11:42:50+08:00",
      "updatedAt": "2025-03-10T11:42:50+08:00"
    }
  ]
}

获取所创建博客的信息

$ curl -s -XGET -H"Authorization: Bearer ${token}" http://127.0.0.1:6666/v1/posts/post-tq7ien|jq
{
  "post": {
    "postID": "post-tq7ien",
    "userID": "user-v1eok4",
    "title": "installation",
    "content": "installation.",
    "createdAt": "2025-03-10T11:42:50+08:00",
    "updatedAt": "2025-03-10T11:42:50+08:00"
  }
}

修改所创建博客的信息

$ curl -XPUT -H"Content-Type: application/json" -H"Authorization: Bearer ${token}" http://127.0.0.1:6666/v1/posts/post-tq7ien -d'{"title":"installation(modified)"}'
{}

删除所创建的博客

 $ curl -XDELETE -H"Authorization: Bearer ${token}" http://127.0.0.1:6666/v1/posts -d'{"postIDs":["post-tq7ien"]}'
{}

使用测试脚本测试整个项目

打开一个新的 Linux 终端,执行以下命令测试 fg-apiserver 中的 API 接口是否正常工作:

$ ./scripts/test.sh

执行结果如下图所示:

可以看到,fg-apiserver 中的接口,都测试通过。

相关文章:

  • C++20 新特性总结
  • 【Vue】el-dialog的2种封装方法(父子组件双向通信),$emit触发父事件/.sync修饰符双向绑定
  • go GRPC学习笔记
  • 《鸿蒙系统下AI模型训练加速:时间成本的深度剖析与优化策略》
  • 位运算性质
  • L3-1 夺宝大赛
  • 【RAG从入门到精通系列】【RAG From Scratch 系列教程5: Retrieval】
  • 动态规划-第2篇
  • Java volatile 关键字详解
  • 华为HCIE认证用处大吗?
  • Python 字节码深度历险:dis 模块揭秘与性能优化实战
  • 数智读书笔记系列016 从《理解和改变世界》探寻AI时代的知识与智能密码
  • 命令行重启Ubuntu软件
  • 云服务器安装宝塔面板部署
  • Mac安装Neo4j图数据库
  • 使用 UNIX 命令在设计中搜索标识符:vcsfind 的入门指南
  • A测题目名称: 双机串口通信系统
  • obsidian插件:Tasks Calendar Wrapper,更清晰的任务列表系统
  • unity webgl导出嵌套html以及导入django
  • 友思特新品 | OCT-3D断层扫描成像测量系统OQ StrataScope升级2.0型号!
  • 马上评|清理“滥竽充数者”,为医者正名
  • 金砖国家召开经贸联络组司局级特别会议,呼吁共同抵制单边主义和贸易保护主义
  • 继71路之后,上海中心城区将迎来第二条中运量公交
  • 最高降九成!特朗普签署降药价行政令落地存疑,多家跨国药企股价收涨
  • 十大券商看后市|A股中枢有望逐步震荡抬升,把握结构性行情
  • 著名蒙古族音乐学者马•斯尔古愣逝世,享年86岁