前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【架构师(第五十一篇)】 服务端开发之技术方案设计

【架构师(第五十一篇)】 服务端开发之技术方案设计

作者头像
一尾流莺
发布2022-12-10 13:56:39
7940
发布2022-12-10 13:56:39
举报

本文正在参加「金石计划 . 瓜分6万现金大奖」

接口设计

server 端当做一个黑盒,它将如何与前端通讯?

功能范围

  • B 端,用户注册,作品管理,模板管理
  • 编辑器,单个作品的内容获取,修改,预览和发布

功能拆分

  • 用户信息相关
  • 作品管理
  • 模板管理
  • 编辑器
  • 工具类

用户信息

  • 获取手机短信验证码
  • 登录,注册
  • 获取用户信息
  • 修改用户信息

作品管理

  • 创建空白作品
  • 复制作品(一个模板也是一个作品)
  • 删除作品
  • 恢复作品
  • 转赠作品
  • 我的作品列表(搜索,分页)
  • 我的回收站列表(搜索,分页)

模板管理

  • 首页推荐模板列表(搜索,分页) ----不需要登录校验
  • 获取单个模板信息 ---不需要登录校验
  • 我的模板列表(搜索,分页)

编辑器

设计时分开,但编写代码的时候会和作品管理写在一起,因为都是作品相关的。

  • 查询单个作品信息
  • 保存作品
  • 预览作品
  • 发布作品
  • 发布作品为一个模板

渠道

  • 创建渠道
  • 删除渠道
  • 修改渠道名称

工具类

  • 上传图片

统一的输出格式

代码语言:javascript
复制
{
    errno:0,// 错误码,无错误则返回 0
    data:{},// 数据内容
    message:'xxx' // 消息内容
}

数据库设计

需要存储的数据

  • 用户
  • 项目/模板(包含项目内容,组件信息)
  • 渠道

数据之间的关系

image.png
image.png

数据表设计

注意:使用 sequelizemongoose 的时候,会自动创建 idcreatedAtupdatedAt ,无需自己手动创建 。

用户

image.png
image.png

作品/模板

微信截图_20221024184457.png
微信截图_20221024184457.png

渠道

image.png
image.png

作品内容

  • 未发布
  • 发布
代码语言:javascript
复制
{
    // 页面的组件列表
    components: [Object],
    // 页面的属性 ,如页面背景图片
    props: Object,
    // 配置信息, 如微信分享配置
    setting: Object
}

书写代码

  • sequelize Model 以及关联关系
  • mongoose SchemeModel

整体架构设计

image.png
image.png

基础功能设计

短信验证过程

初次获取验证码

  • 前端发送请求 request - 输入手机号,请求短信验证码
  • 服务端 server - 生成 4 位随机数,缓存 2 min
  • 服务端响应 res
    • 发短信验证码
    • 返回发送短信成功给前端 { errno:0 }

再次获取验证码

  • 前端发送请求 request - 输入手机号,请求短信验证码
  • 服务端 server - 检查是否有缓存,没有就生成一个验证码,缓存 2 min
  • 服务端响应 res
    • 有缓存,返回错误,不可以频繁获取
    • 没有缓存,发送短信,并返回成功信息给前端 { errno:0 }

登录验证

  • 前端发送请求 request - 输入手机号,短信验证码,请求登录验证
  • 服务端 server - 与缓存中的信息进行匹配
  • 服务端响应 res
    • 匹配成功,登录成功,返回 token
    • 匹配失败(验证码错误或过期),登录失败

其他细节问题

  • 缓存,禁止频繁发送
  • 短信服务的提示和报警
  • 短信发送失败,不会进行缓存,用户可以立刻再次请求验证码
  • 如果 server 缓存失败,允许用户立刻重复获取验证码
  • 短信服务挂掉,报警

用户信息接口

  • 获取手机短信验证码
  • 登录(注册)
  • 获取用户信息
  • 修改用户信息

代码演示

代码不贴了,只记录下文件位置,到时候看的时候代码仓库里找就行。

  • routes/users.js
  • controller/users/
  • service/users/
  • test/apis/users.js

作品管理接口

  • 创建空白作品
  • 复制作品(通过模板创建)
  • 删除作品
  • 恢复作品
  • 转赠作品
  • 我的作品列表(搜索,分页)
  • 我的回收站列表(搜索,分页)
  • 查询单个作品信息
  • 保存作品

代码演示

  • routes/works.js
  • controller/works/
  • service/works/
  • test/apis/works.js

模板接口

  • 首页推荐模板列表(搜索,分页) - 不需要登录校验
  • 获取单个模板信息 - 不需要登录校验
  • 我的模板列表(搜索,分页)

代码演示

  • routes/templates.js
  • controller/works/findTemplate
  • service/works/templates
  • test/apis/templates.js

发布相关的功能

发布,即获取一个 url,能外网访问该作品。

功能范围

  • 发布作品
  • 支持多渠道
  • 发布为模板

细节设计

  • url 不能太长,因为要生成二维码。
  • 作品发布之后,重新编辑,保存,未发布的时候线上不可以生效。
  • 再次发布时,url 不能变,渠道号也不能变。
  • 用户访问 url 时必须带有渠道号,否则无法分渠道统计。
  • 注意数据保密,防爬。
  • 发布时进行内容安全检查。

代码演示

  • routes/works.js
  • controller/works/publishWorks.js
  • service/works.js
  • cache/works/publish.js
  • test/apis/work.js

渠道接口

代码演示

  • routes/channel.js
  • controller/channel/
  • service/channel.js
  • cache/works/publish.js
  • test/apis/channel.js

PS: 从本节开始就是大量的业务代码的书写,就不记录文章里了,需要的时候直接去看对应的代码就就行了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 接口设计
    • 功能范围
      • 功能拆分
        • 用户信息
          • 作品管理
            • 模板管理
              • 编辑器
                • 渠道
                  • 工具类
                    • 统一的输出格式
                    • 数据库设计
                      • 需要存储的数据
                        • 数据之间的关系
                          • 数据表设计
                            • 用户
                            • 作品/模板
                          • 渠道
                            • 作品内容
                            • 书写代码
                            • 整体架构设计
                            • 基础功能设计
                              • 短信验证过程
                                • 初次获取验证码
                                • 再次获取验证码
                                • 登录验证
                                • 其他细节问题
                              • 用户信息接口
                                • 代码演示
                              • 作品管理接口
                                • 代码演示
                              • 模板接口
                                • 代码演示
                              • 发布相关的功能
                                • 功能范围
                                • 细节设计
                                • 代码演示
                              • 渠道接口
                                • 代码演示
                            相关产品与服务
                            验证码
                            腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档