Closed dkvirus closed 5 years ago
以 电商项目收货地址
为例。
北京市、朝阳区
作为默认地址;上海市、浦东新区
作为默认地址;江苏省、南京市
作为默认地址。当在小程序端绑定手机号 => 为了就是和手机端共享数据。收货地址这个模块就存在歧义,到底是以小程序端的默认地址为主,还是以手机端的默认地址为主。不管以那一边为主更新数据,都有点帮用户做决定的感觉。这是不好的。
要解决上面提出的问题,唯一的做法就是:小程序端在填写收货地址之前就必须要绑定手机号进行数据共享。甚至是一进入小程序就让用户绑定手机号,如果这么做,造成的用户体验非常糟糕。
结论:非要实现多端统一,是可以的,但用户体验非常糟糕。
本来整这个应用就是方便看小说,用户体验永远放在第一位。可以提供多端,但不做数据共享了。可以提供第三方登录,但登录之后相当于一个新的用户。
邮箱和手机短信验证码在服务端需要短时间保留,之前准备用 express-session 中间件做的,但调研发现当重启 node 应用时,express-session 里的东西会消失。考虑使用 node-redies 中间件,本地数据库,重启服务数据不会丢失。
多端
登录方式
小程序端内嵌在微信/支付宝里面,不需要登录,下面登录方式针对
移动端
和网页端
。多端统一
小程序端:进入
公羊阅读
小程序,并往我的书架
加入了几本小说,在阅读每本小说时会记录阅读到第几章节,下一次会接着阅读。同一个人,提供手机 app 和网页端进入的方式,需求是:通过 app 和网页进入能加载小程序端的数据,如:显示小程序里书架里已有的小说,从小程序的阅读记录开始继续阅读等。
接口设计
server_python 不改动,提供 /api/v1 版本的接口。新建 server_node_express 工程提供 /api/v2 版本接口。
手机号注册相关接口
检测手机号是否注册,未注册 => 服务端往手机号发送验证码 => 用户输入验证码,服务端判断是否正确,若正确,即注册成功。
GET /api/v2/gysw/validate
校验手机号/邮箱/用户名是否已注册;GET /api/v2/gysw/sms/code
请求发送手机验证码,需要回填验证码;POST /api/v2/gysw/sms/validate
校验手机验证码输入是否正确;POST /api/v2/gysw/user
保存用户信息;绑定邮箱相关接口
验证邮箱是否已注册,未注册 => 服务端往邮箱发送一封验证邮件 => 规定时间内点击验证邮件中的链接即完成验证操作。
GET /api/v2/gysw/email/code
请求发送验证邮件,需要点击链接;POST /api/v2/gysw/email/validate
校验邮箱验证码;绑定用户名
PUT /api/v2/gysw/user
更改用户信息,输入昵称,昵称可作为登录名称使用;书架相关接口
GET /api/v2/gysw/shelf
查询书架列表;DELETE /api/v2/gysw/shelf/:book_id
删除书架列表中一本小说;POST /api/v2/gysw/shelf
添加书架列表中一本小说;PUT /api/v2/gysw/shelf/:book_id
更新书架列表中一本小说,主要记录最新阅读章节;搜索相关接口
GET /api/v2/gysw/search
查询小说列表,查询条件:作者名/小说名;GET /api/v2/gysw/search/hot
查询热门搜索记录;GET /api/v2/gysw/search/hist
查询当前用户搜索历史记录;POST /api/v2/gysw/search/hist
添加当前用户搜索历史记录;其它查询接口
GET /api/v2/gysw/content/:chapter_url
查询小说某一章节具体内容;GET /api/v2/gysw/chapter/:book_url
查询小说章节目录;GET /api/v2/gysw/classify/classify_id
查询小说分类;安全方面
之前的接口通过抓包可以看到请求地址,并随意调用接口,有恶意不间断发送请求的风险。改良设计如下:
表结构设计
TODO