Golang之我想写个"web框架"-7: 完成一个“留言小demo”

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情

这次我们想使用该"web框架"完成一个“留言小demo”,如果还没有看过之前的文章的,建议翻看一下

demo设想

我们想完成一个“留言小demo”,证明我们的"web框架"还是能够完成某种工作的, 该工具主要有3个方法,分别为 新增数据、查询全部记录、查询某条记录。

接口文档

数据存放

数据直接放置在程序内存中即可

新增数据

请求标题参数值
请求方式POST
请求地址/addIndex
上传参数title标题 node记录
响应数据:成功状态码: 200 文本: ${title}已经提交成功!
响应数据:失败状态码: 400 文本: 上传数据有误

查询全部记录

请求标题参数值
请求方式GET
请求地址/queryAll
上传参数
响应数据:成功状态码: 200 文本: 查询到的JSON数组数据
响应数据:失败状态码: 500 文本: 服务器出错!

搜索查询记录

请求标题参数值
请求方式GET
请求地址/queryOne
上传参数key 查询的参数
响应数据:成功状态码: 200 文本: 查询到的JSON数组数据
响应数据:失败状态码: 500 文本: 服务器出错!
响应数据:失败状态码: 400 文本: 上传数据有误!

编码

数据存放

我们可以定义一个结构体,用于存放该数据,且在全局定义该类型数据。

路由定义

我们如上在接口文档中,已经设计了3个方法,分别为 新增数据、查询全部记录、查询某条记录。我们定义路由信息如下:

如上代码我们定义了3种路由,除了/addIndexPOST请求外,其他2个都是GET请求。而后,我们仅需完善后面三个函数即可。

新增记录

如上代码我们从客户端获取titlenode的数据,若数据获取失败,则返回客户端 上传数据有误 ,若都接收到数据,则我们申请一个IndexNode,来存放该数据,最后将该数据加到留言组中去。

查询全部数据

这个较为简单,我们仅需将IndexNodes给序列化后,直接返回客户端即可,若josn序列化失败,则返回给客户端: "服务器出错"

搜索查询记录

如上代码,我们从客户端获取key,若获取失败,则向客户端返回 上传数据有误, 而后我们定义一个新的IndexNode数组类型用以存放我们搜索到的数据。

在搜索中,我们先搜搜标题数据,而后搜索内容,当包含key,我们则加如数组中,最后序列化为json数据,返回给客户端,若序列化失败,则返回 “服务器出错”

\

测试

我们测试使用curl工具,加linux json软件jq

新增数据

本次测试,我们准备了几条记录,分别为:

title=每日必记&node=记得上下班打卡
title=每日必做&node=每小时必须喝一杯300ml水
title=临时任务&node=博客编写

我们使用curl添加命令如下

 curl -s -X POST -d "title=每日必记&node=记得上下班打卡" 127.0.0.1:8082/addIndex
 curl -s -X POST -d "title=每日必做&node=每小时必须喝一杯300ml水" 127.0.0.1:8082/addIndex
 curl -s -X POST -d "title=临时任务&node=博客编写" 127.0.0.1:8082/addIndex

查询全部数据

我们使用curl访问/queryAll获取全部数据,而后使用jq初始化一下。

命令:

curl -s 127.0.0.1:8082/queryAll | jq

搜索查询记录

我们将上传每日作为关键字,查询记录。

命令:

curl -s '127.0.0.1:8082/queryOne?key=每日' | jq

总结

代码上传到: gitee.com/pdudo/golea… , 在本篇中,我们已经看了如何使用我们自己写的“web框架”来编写一个简单的demo,怎么样,我们自定义的“web”框架还可以吧,快来试试吧。

posted @ 2022-08-04 22:42  pdudos  阅读(0)  评论(0编辑  收藏  举报  来源