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

news2025/7/5 1:14:08

接口设计

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

功能范围

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

功能拆分

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

用户信息

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

作品管理

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

模板管理

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

编辑器

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

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

渠道

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

工具类

  • 上传图片

统一的输出格式

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

数据库设计

需要存储的数据

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

数据之间的关系

数据表设计

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

用户

作品/模板

渠道

作品内容

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

书写代码

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

整体架构设计

基础功能设计

短信验证过程

初次获取验证码

  • 前端发送请求 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: 从本节开始就是大量的业务代码的书写,就不记录文章里了,需要的时候直接去看对应的代码就就行了。

最后

最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/109323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线上牛奶配送

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 基于Java的线上牛奶配送系统的设计与实现 风网站前台:网站介绍、联系我们、公告信息、套餐类型、牛奶套餐、…

Linux-4 文件管理

Linux-4 文件管理 文件管理概述 谈到Linux文件管理,首先我们需要了解的是,我们要对文件做些什么事?其实无非就是对一个文件进行创建,复制,移动,查看,编辑,压缩,查找&am…

自己个人拥有一个可以支付功能的网站?当然可以了!保姆级演示!

文章目录前提条件演示应用申请开通和配置应用创建应用配置代码开发后端实例前端代码实例源码前提条件 这是必要条件!!! 这是必要条件!!! 这是必要条件!!! 开通当面付&am…

人脸检测和对齐算法MTCNN

1. 概述 人脸识别在实际的生活中有着广泛的应用,得益于深度学习的发展,使得人脸识别的准确率得到大幅度提升。然而,为了做好人脸识别,第一步需要做的是对人脸检测,主要是通过对图片分析,定位出图片中的人脸…

Java项目:springboot网上点餐系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 功能介绍 SpringBoot在线订餐系统项目。主要功能说明: 分为两个角色,餐厅老板、普通用户 餐厅老板可以登录,注册&…

质量不错的蓝牙耳机有哪些?2023年值得选购的四款蓝牙耳机

现如今,蓝牙耳机越多人使用,不同于有线耳机,蓝牙耳机更为方便,没有线束的困扰,走到哪也不用带上手机一起,特别便利。然而,随着蓝牙耳机市场的旷大,各种类型各种样式的耳机五花八门&a…

C++ 实现并查集结构

前言 并查集一般用于多元素,多集合的查找问题; 听说很有用,但是平时好像确实没有怎么见过。。 leetcode典型例题:岛屿数量 一、原理 其实并查集的每个小集合就是一张有向图,只不过是所有子节点指向父节点的图结构。…

认证鉴权对于 API 网关的重要性

认证鉴权作为 API 网关不可或缺的能力,已然成为用户在选型 API 网关时考量的重要因素之一。 作者钱勇,API7.ai 开发工程师,Apache APISIX Committer 在当下云原生越发成熟的环境下,API 网关最核心的功能可以概括为:连接…

高品质蓝牙耳机排行榜,值得入手的四款蓝牙耳机分享

2023年即将到来,还有哪些蓝牙耳机值得大家购买呢?蓝牙耳机在我们日常生活中发挥着很大作用。无论是听歌还是通话,又或者是运动健身、玩游戏等,都常见大家使用。同样也伴随着蓝牙耳机市场的壮大,五花八门的耳机层出不穷…

【C语言进阶】进来抄作业,完善你的通讯录(软工期末大作业可用)

目录 🥰前言🥰: 一、输入合法性检测🤠: ①.对“ 联系方式 ”的合法性检测: ②.对“年龄”进行合法性检测: 二、字典排序🤑: 三、反馈优化🤯: …

Python 圣诞树代码

一、前言 1.本章将会讲解Python编程 实现圣诞树效果! 2.圣诞节介绍 基督教纪念耶稣诞生的重要节日。亦称耶稣圣诞节、主降生节,天主教亦称耶稣圣诞瞻礼。耶稣诞生的日期,《圣经》并无记载。公元336年罗马教会开始在12月25日过此节。12月25日…

现在转行计算机如49年入国军?

阿里,腾讯等互联网大厂最近不太安宁,裁员消息频出,无风不起浪,裁员年年有,今年特别多。于是不少打算入行或者已经入行计算机的同学开始担忧,如今入行计算机,怎么有点49年入国军的赶脚&#xff1…

Android面试题及答案整理(2023最新版)持续更新中......

倒霉的时候总会想起福祸相依,但你会发现倒霉起来没完没了,就是看不到传说中的“福” 年初被裁了,我会安慰自己,此处不留爷自有留爷处,然后踏入找工作的行列;没有面试邀请,我会告诉自己&#xf…

倒在转“码”路上的文科生,文科生也能转行做IT吗?

近期,一篇《倒在转“码”路上的文科生》火了。 这也让关于“文科转码”的话题引起了一番热度,由于大环境不佳,使得毕业生就业成为了一个难度,其中文科生相较而言,选择更少,因此,让不少学子有了…

Java项目:springboot酒店宾馆管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 功能介绍 springboot酒店宾馆管理系统。该系统为后管系统,无前台。主要分三种角色:管理者/工作人员/前台人员。 主要功能有&…

网络安全方向好吗?

我就在这个行业,今年刚毕业,民办二本,目前武汉,薪资就没必要说了,高就对了。 这个行业优势就是工资高,缺点就需要一直学,卷得要死,不是跟别人卷,而是自己卷,…

数据库实验3 完整性语言实验

实验3 完整性语言实验 实验3.1实体完整性实验 1.实验目的 掌握实体完整性的定义和维护方法。 2.实验内容和要求 定义实体完整性,删除实体完整性。能够写出两种方式定义实体完整性的SQL 语句:创建表时定义实体完整性﹑创建表后定义实体完整性。设计SQL语句验证完整性约束是…

LeetCode 96. 不同的二叉搜索树

LeetCode 96. 不同的二叉搜索树 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n 3 输出:5示例 2: 输入&#x…

我,30多岁的土木工程人,终于转行了

行外人可能没法想象,十年前最火爆、高校录取分数最高的土木工程专业,现在在贴吧知乎等社交网站上,竟然成了一个“劝退率”最高的专业。 土木出身的工程人,一边吐槽“土木毁我青春”,一边苦口婆心的劝退还在上学的学弟学…

一本通 1276:【例9.20】编辑距离

看完题目后,整个人都懵了,这题咋整? 哎呀,知道知道,用动态规划做 不要慌,我们慢慢分析.... 目录 做题前须知 状态转移 如果 a[i] b[j] 如果 a[i] ! b[j] 做删除操作 做插入操作 做替换操作 初始…