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

33|业务开发(上):问答业务开发

删除回答
创建回答
获取回答
回答加载作者字段
问题加载作者字段
更新问题
删除问题
创建问题
获取问题
更新问题接口 /question/edit
问题删除接口 /question/delete
回答删除接口 /answer/delete
回答创建接口 /answer/create
问题详情接口 /question/detail
问题列表接口 /question/list
问题创建接口 /question/create
下节课实战继续
实战经验
熟练掌握Gorm的模型定义
创建测试数据库中的表
定义Gorm模型的tag
协议
分页模型
问题/回答模型
实现用户服务协议
开发模块接口
定义用户服务协议
接口swagger化
问题更新页
问题详情页
问题列表页
问题创建页
实现前端接口
实现后端接口
分析需求
总结
思考题
qa服务设计
后端开发
页面和接口设计
问答业务模块开发流程
业务开发(上):问答业务开发

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

你好,我是轩脉刃。
上两节课我们开发了一个完整的用户模块的前后端,并且运用了 hade 框架的不少命令行工具和基础服务。这节课,我们继续开发这个类知乎问答网站的另外一个比较大的业务模块:问答业务模块。
关于问答业务模块的开发,整体的开发流程和基本的使用方式和用户模块其实差不多,说到底这两个模块都是操作数据库中对应的数据表,我们同样使用先分析需求,再实现后端接口,最后是实现前端接口的流程。
问答模块,包含问题表、回答表和之前的用户表,这三个表之间有一些关联关系,在 GORM 中,如何使用这些关联关系建模,并且封装问答服务,接着对这些问答服务的方法提供足够的测试,是我们今天的解说重点。

页面和接口设计

还是先梳理一下问答模块页面,它包含四个页面:问题创建页、问题列表页、问题详情页、问题更新页。名称都很清晰,在问题更新页中,我们可以对某个问题进行更新修改。不过我们暂时不提供回答的修改功能,只提供回答的创建和删除功能。

问题创建页

在这个页面中,用户可以提出一个问题。提出问题的时候,让用户输入问题的标题和内容。通过点击提交,这个问题就提交进入数据库,并且在列表页面展示了。
问题创建页明显就只会和后端有一个接口的交互,问题创建接口 /question/create。它是 POST 请求,请求参数包括问题标题 title 和问题内容 context。我们用一个结构来表示这个接口的请求内容:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了业务开发中问答模块的开发流程和接口设计。作者首先梳理了问答模块的页面和接口设计,包括问题创建页、问题列表页、问题详情页和问题更新页,以及相应的接口设计。接着详细讲解了后端开发的四个步骤,包括接口swagger化、定义用户服务协议、开发模块接口和实现用户服务协议。文章还介绍了DTO层模型的设计和接口方法的注册,以及如何编写swagger的注释。作者提到了接口swagger化之后需要设计qa服务,统一使用一个数据模型来定义DO层模型和PO层模型。整篇文章以技术开发为主线,详细介绍了问答模块的开发流程和后端开发的具体步骤,适合开发人员快速了解问答模块的开发实践。文章还介绍了Gorm的tag标签的丰富运用,包括索引、非空默认值、时间管理和外键约束等,以及如何利用Gorm提供的预加载功能。此外,还介绍了分页模型Pager的设计。整体而言,本文内容丰富,技术性强,适合开发人员学习和实践。

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

全部留言(2)

  • 最新
  • 精选
  • Juha
    老师,想问一个简单的问题,关于数据库的更新时间和创建时间,是建议代码里写还是数据库本身做约束呢(前提是MySQL的情况下,设置数据库表默认值和自动更新时间)?

    作者回复: 我建议数据库自动更新时间戳的

    2021-12-18
  • 冬Don
    既然请求方法有GET, DELETE等动词,为什么还要在路径上添加动词呢?
    2023-08-12归属地:澳大利亚
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部