描述网站开发的广告词,用网站做CAN总线通信好吗,app排名,南京单位网站建设平台我们现在有了一个本地sqlite3的迷你英文单词小测试工具#xff0c;需求就跟工作当中一样是不断变更的。这里虚构两个场景#xff0c;并且一步一步的完成最终升级后的小demo。
场景#xff1a;数据不依赖本地sqlite3#xff0c;需要支持远程访问#xff0c;用目前的restfu…我们现在有了一个本地sqlite3的迷你英文单词小测试工具需求就跟工作当中一样是不断变更的。这里虚构两个场景并且一步一步的完成最终升级后的小demo。
场景数据不依赖本地sqlite3需要支持远程访问用目前的restful api来实现
总体设计
这里我们需要做一个迷你的restful的服务端并且优化本地的代码从以前请求本地sqlite3变成restful 请求并且还能支持原先本地sqlite3。需要代码尽可能的容忍需求的变化。
详细设计
为了能适应本地sqlite3和restful api访问我们需要来一次简单的抽象把业务层的接口给抽象出来这样利用派生类来构建sqlite3的实现和restful api 的实现然后重构下状态机面向接口编程。这样就能还好的应对这里的需求即使后续迁移到mysqles等等都不在话下。
面向接口重构代码
先抽象接口我们主要有几个业务查询函数查询所有数据查询some数据添加数据以及更新数据 sqlite3的实现 为了复用代码之前的sqlite3作为一个成员构造的时候打开数据库 添加 查询一些数据 有了这两个类我们搞个factory来构建这样的对象出来。然后再之前的状态机里面全部利用接口来操作。 原先直接调用manager的代码编程操作接口 测试状态机主要代码 然后再构造函数里面构造正确的对象 到这里我们有个面向接口的重构版本
添加restful api接口实现 继承一个新的派生类很显然这里是调用restapi来完成对应的功能。这里我们还是继续使用cpprestsdk来完成。
我们先定义三个辅助函数更新类似这里不再重复。 添加 查询一些 备注按正常的开发顺序其实应该先整服务器端然后再编码c client部分。
服务器端代码
这里可选择路子很多pythonjava spinrtbootnode等等这里挑选从来没玩过的nodejs来整。毕竟就是为了了解点新的知识。
node 开发一个restful 百度下一般是推荐express来整。直接参考demo来搞 引入express 和validator验证数据以及实现restful功能
在开始写之前我们先要把sqlite3远端的node代码写出来老样子定义一个模块 连接数据库执行sql语句然后导出函数 在app.js里面引入。然后就是写接口对应的几个实现代码 返回所有数据
返回一些数据 添加数据 到这里服务器基本完成建议服务器单独用postman 配合nodejs 来整不要直接和c对接不然问题会发散烧脑。到这里服务端和客户端都有了。在工厂函数里面构造对应的对象就自动适应了需求变化可能这也就是写代码前需要先思考设计的魅力所在。
demo 题外话
关于字符编码字符编码可能花费了我写这个小工具很多时间一会是string转wstring一会是utf-8转gb2312为了显示。总结下来1需要知道当前的string 是什么编码然后目标是什么编码然后找对应的函数2. vs 这里因为区域设置使用的GB2312所以utf8需要转换成GB2312才能正确的显示中文。3. web是不是都是utf8