开发中的一些经验总结
API 相关
git flow 工作流
- master 主版本分支, 此分支上是最新代码
- develop 开发版本分支, 但是不在这个分支上做开发, 此分支上是开发中的最新代码
- feature 开发版本分支, 通常开发新功能时基于 develop 新建一个 feature 分支, 开发完成之后合并到 develop 上, 并进行删除
- release 预发布分支, 基于 develop 分支创建, 用来进行测试的分支, 测试完成之后合并到 master
- hotfix 分支, 紧急bug修复分支, 从 master 创建。
RestFull
- 请求方法
- Post 新增
- Put 更新
- Get 查询
- Delete 删除
- 嵌套Api
- 请求某篇文章的评论列表 GET /post/1/comment
- 请求某篇文章的某个评论 GET /post/1/comment/1
- 隐藏某篇文章的某个评论 PUT /post/1/comment/1/hidden
- 请求方法
动态查询参数
- 查询条件过滤 filter /post?filter[name]=test&filter[created_at_between]=2018-01-01,2018-12-31
- 排序 sort /post?sort=-id,name
- 包含关系 include /post?include=user,commentCount,commentExists
- 选择字段 fields /post?include=user&fields[post]=id,name,info&fields[user]=id,name
异常处理机制
- 框架服务异常, status 503 506 , code 为具体的错误类型. 比如 mysql 超时, redis 连不上, 短信验证服务欠费, oss 账号密码错误之类的问题, api 接口维护等等
- 请求处理异常, status 400 403 等等, code 为资源id , 比如 路由不存在, 控制器方法不存在, 资源不存在, 没有权限等等
- 业务逻辑异常, 错误码 500, code 为具体的错误类型, 比如 传入参数校验不通过
日志处理
- sql 查询日志, 仅开发环境, 记录在 sql.log
- 错误日志, 记录在 error.log
- 用户操作日志, 记录在数据库
- api 请求日志, 每个请求有一个 request_id, 服务端在 header 加入 RequestId 字段。 然后请求信息记录在文件,文件名为 RequestId.
代码结构
- 路由 控制器 模型 事件等等放在 laravel 默认的位置
- 业务逻辑放在 Repositories 文件夹下, 每一个功能模块创建一个单独的文件夹, 文件夹下又细分为 Contracts Services 两个文件夹分别存放接口和实现。
- 工具类放在 Util 文件夹中
- 每个 interface 的所有方法都要编写测试
如何保证 token 的安全性
- token 中携带 signature, signature 能保证 token 不被篡改,如何保证的呢? signature 是只有服务端才能生成和解密的一组加密字符串,篡改后的 token 和 signature 会对不上。
- token 有效期,不要设置永久的 token。
- token 黑名单,用户的 token 一旦刷新, 之前的 token 需要加入黑名单无法再使用。
Web开发相关
拆分组件的时机。
- 复用类组件,页面某一部分可能在很多页面可以复用。
- 模块类组件,页面的某一部分和其他部分没有联系或者联系很少, 可以抽象到几个变量中。
同一类型的 store 可以因为模块的不同, 创建多个命名空间下的 store。
组件可以从一个简单的组件开始封装高阶的组件。
只在模块类组件使用 store。
面试的时候技术总监不在 (面试题有点意思,感觉一般人可能不太会做,我答完之后专程把技术总监喊了回来) ,然后在会议室写的 。哈哈哈哈 这操作也没谁了。
到家收到了offer,技术氛围和薪资待遇都很满意。哈哈哈哈 开心, 祝贺我吧 各位网络有缘人。
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 1年前 自动加精
推荐文章: