手把手带你写一个 Web 框架
叶剑峰
腾讯高级工程师,前滴滴技术专家
22731 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
特别放送 (1讲)
手把手带你写一个 Web 框架
15
15
1.0x
00:00/00:00
登录|注册

34|业务开发(下):问答业务开发

使用第三方库进行数组操作
使用事务函数Transaction
使用toast-ui-editor组件库
AnswersLoadAuthor
PostAnswer
返回操作成功
使用登录用户创建问题
获取登录用户信息
解析参数
提交回答数据
调用后端接口
页面框架搭建
富文本编辑器
goconvey库进行单元测试断言
使用SQLite驱动模拟数据库操作
服务实现
14个后端服务协议
回答删除接口
回答创建接口
更新问题接口
问题删除接口
问题详情接口
问题列表接口
问题创建接口
14个接口
使用swagger-UI展现接口的输入输出
使用第三方error库
实施前后端联调
前端Vue开发
单元测试
实现用户服务协议
开发模块接口
后端问答服务接口设计
前后端接口设计
思考题
问答业务开发
业务开发

该思维导图由 AI 生成,仅供参考

你好,我是轩脉刃。
上节课我们已经完成了问答业务的一部分开发,主要是两部分,前后端接口设计,把接口的输出、输入以 swagger-UI 的形式表现;以及后端问答服务的接口设计,一共 14 个接口。这节课我们就继续完成问答的业务开发。
还是先划一下今天的重点,我们先使用前面定义的问答服务协议接口,来完成业务模块的接口开发,验证问答服务的协议接口是否满足需求,然后再实现我们的问答服务协议。不过因为这次问答服务实现的接口比较多,0 bug 有一定难度,所以会为问答服务写一下单元测试,希望你重点掌握。
最后,我们实现前端的 Vue 页面,同样,由于前端页面的编写不是课程重点,还是挑重点的实现难点解说一下。
下面开始我们今天的实战吧。

开发模块接口

上一节课定义好了问答服务的 14 个接口,可以使用这 14 个接口来实现业务模块了。我们的业务模块接口有七个接口需要开发:
问题创建接口 /question/create
问题列表接口 /question/list
问题详情接口 /question/detail
问题删除接口 /question/delete
更新问题接口 /question/edit
回答创建接口 /answer/create
回答删除接口 /answer/delete
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了问答业务的开发过程,重点讲解了使用定义好的问答服务协议接口完成业务模块的接口开发,并进行单元测试。文章首先介绍了PostAnswer接口的实现,通过事务函数Transaction封装了多次数据库操作,确保数据一致性。接着详细讲解了AnswersLoadAuthor方法的实现,使用第三方库对数组进行特殊操作,以及使用Preload加载回答作者字段的方式。此外,还介绍了单元测试的编写方式,通过初始化服务容器和模拟数据库操作来进行测试。 在模拟数据库操作方面,文章介绍了使用SQLite驱动并将数据库保存在内存中来模拟MySQL的操作,避免了搭建测试MySQL数据库和编写mock方法的繁琐操作。同时,推荐了goconvey作为单元测试库,提供丰富的断言和可视化工具界面,极大地简化了单元测试的编写和执行过程。 在前端Vue开发方面,文章重点介绍了富文本编辑器的使用,使用了第三方组件toast-ui-editor来实现编辑和展示功能。通过引入组件库并在页面组件中进行引入,文章展示了如何在页面中使用富文本编辑器,并给出了具体的代码示例。 总的来说,本文通过实际开发案例,详细介绍了问答模块的前后端开发流程,以及在开发过程中遇到的一些特殊情况和解决方案,对于具体开发问答业务的开发人员具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一个 Web 框架》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • River
    大赞大赞,go wed框架从0到1都全了,就像一本参考书,以后遇到问题可以常回来看看
    2022-05-28
    2
  • taoist
    github.com/pkg/errors 已经归档不再维护了,可以用 gitlab.com/tozd/go/errors 代替
    2024-02-19归属地:山东
    1
  • Charles
    qa中的单元测试使用orm.WithGormConfig方式设置数据库外键约束不生效时,代码报错。不知道什么原因
    2022-05-06
    1
  • Charles
    第三方 error 库,错误信息会带上堆栈信息,更容易定位问题
    2022-04-24
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部