通用要求

接口命名小驼峰
如果不是restfull的接口,需要语义化,例如:getUserInfo、getUserList、createUser、updateUser、deleteUser、uploadUserImg
接口尽量轻巧,前端不需要的数据,不需要返回
后端尽量统一风格,禁止单独适配
为了避免某些Chrome浏览器广告屏蔽插件的误拦截,不使用ad等广告字眼

对前端的要求:前端使用axios统一封装请求方法,做统一请求、拦截

安全性要求

如果是客户敏感信息,接口绝对需要返回最小量的数据
需要进行数据脱敏的情况,由后端进行脱敏,不能仅靠前端来脱敏展示
提交订单类接口,后端不能相信前端传入的金额数据,需要自己计算

接口的部署

接口统一部署在网关上,相关后端同学来维护发布

接口文档维护

统一维护在yapi平台上,禁止其余方式传输,一切以yapi平台为准;接口的变更,也需要同步在yapi平台上
接口文档,字段需要有必要的中文描述,以及枚举值

通用接口返回体

{"code":"200", // 状态码,200-正常;401-未登录,前端控制跳转登录界面"data":{ // 数据返回体},"message":"成功" // 提示信息,如果code不是200的话,前端将此提示信息弹窗展示
}

code枚举
200:正常
401:未登录,前端控制跳转登录界面
403:无权限,前端跳转相应界面

data 字段返回需要完整,禁止字段返回缺失
例如

data: {name: '', // 空字符串obj: null, // 空对象totol: 0, // 无值的数字list: [] // 空数组
}

message
如果code返回不是200,则前端弹窗提示message,需要简单醒目,不能抛出 Java的堆栈报错信息
如果code返回正确,message也尽量返回正确信息,用于前后端对比

前端通用组件要求

前端基于目前的业务,封装了一些公用列表、弹窗、交互、数据脱敏等一系列通用组件,需要后端的同一类接口,进行method、请求格式、返回格式的统一

例如:

  • 获取列表的接口,post方式
  • 通过id获取单个数据项的信息时,使用restfull的get格式,如 /person/123
  • 添加类接口,post方式;更新类接口,put方式;删除类接口,delete方式

列表分页请求,通用参数

page: 当前页码,以1开始
size:当前页面展示的条数,前端默认10

总之,不能出现分页信息,传入后端需要的start+limit的那种数据库查询的方式

列表返回的格式

需要返回 total 总条数,前端用于分页
不需要返回总页数之类的信息

{"code":"200", // 状态码"data":{"records":[ // 数据list],"total":20 // 总条数},"message":"成功" // 提示信息,如果code不是200的话,前端将此提示信息弹窗展示
}

日期格式传输

前后端传输时间字段,均以13位标准时间戳传输

布尔类数据

统一使用1、0来传输数据,1为true,0为false

超长型数字

后端库表的id,可能生成时超过16位,此时会面临精度丢失问题,这种情况,需要将id,通过字符串的形式传回到前端

数据精度处理

为了避免出现那种0.1+0.2=0.30000000000000004的问题,通常情况下,前端不做计算后结果的传输,一切计算后的数据,均由后端来计算
电商订单类,更应当如此!!!
后端返回前端数据,数据精度也需要过滤校验

图片地址的返回

需要返回全量的oss图片地址,禁止前端拿到url后再行拼接https

post方式请求细节

Content-Type的选择
除了上传类的post请求使用multipart/form-data外,其余的post请求,均使用application/json格式

post方式,尽量避免通过url上传值,统一放在body里面

模糊搜索接口约定

模糊搜索,要求速度快,数据量少

   请求方式:get接口返回:无需分页,最多返回10条数据

如无特殊规定,模糊搜索接口返回数组格式,格式如下

{"code":"200", // 状态码"data": [{value: 1label: '已创建'}, {value: 2label: '部分完成'}],"message":"成功" // 提示信息,如果code不是200的话,前端将此提示信息弹窗展示
}

后发先至接口的处理

有的时候,接口调用比较密集,而前端拿到返回需要有次序,此时需要后端在返回体内,添加前端开始调用接口的时间戳,用于前端来判断接口前后顺序

前端规范——前后端接口规范相关推荐

  1. 视频教程-VUE前端开发/前后端分离-Java

    VUE前端开发/前后端分离 13年软件开发经验,设计开发30多个大型软件,涉及政府.银行.电信.能源等大型软件项目. 精通J2EE体系架构,熟练使用Struts.Spring.hibernate.ib ...

  2. 【前端44_前后端交互_跨域】前端解决:JSONP、后端解决:CORS 、后端代理

    文章目录 跨域 什么是跨域 前端解决: JSONP 实现原理 步骤 前端:创建标签,拼接传递参数 后端:接收值,返回值 封装 Ajax 代码 在封装的 Ajax 中添加 JSONP 需求 思路 练习: ...

  3. 【前端】前后端交互重点Ajaxの介绍及实战

    ❤️Ajax❤️ 每篇前言: 第一部分:JSON简介 效果展示: 第二部分:前后交互 1.此处介绍前后交互的两种方式: (1)利用form表单里的name属性进行前后端交互 HTML代码: Pytho ...

  4. 前端python和go_Python_前端网页+前后端交互-Go语言中文社区

    学习Python_前端网页,以一个登录页为案例 简单的 django.http.HttpResponse 可以把内容显示到网页上,本文主要记录如何使用渲染模板的方法来显示内容. HttpRespons ...

  5. Python_前端网页+前后端交互

    学习Python_前端网页,以一个登录页为案例 简单的 django.http.HttpResponse 可以把内容显示到网页上,本文主要记录如何使用渲染模板的方法来显示内容. HttpRespons ...

  6. mysql+java+springboot+前端 实现前后端数据的交互的后台

    目录 后台配置一-五 一. 新建模块 二.添加依赖 三.配置maven 四.在pom.xml添加如下 五.配置文件 spring-Druid配置参数详解 给一个接口类 实现接口 在控制器中接受返回值 ...

  7. 前端规范 - js开发规范

    因为会牵扯到业务逻辑,在实际开发场景中,js开发会占绝大部分,相应的规范细节也比较多 限于篇幅原因,加上有eslint的这个利器,本文只讲一些最最常用的规范 [强制] 开启eslint 开启了esli ...

  8. 前端规范 - 前端项目开发规范

    0 前言 好好做业务,提高自己的工程能力 [强制] 1 开启eslint 根据团队的习惯,制定适合自己的rules 比如 no-console no-debugger可以关闭 [强制] 2 新项目使用 ...

  9. SpringBoot后台管理+Uniapp(混合APP)前端 之 酒店住宿+景点下单管理系统(SpringBoot前后端分离)

    酒店住宿+景点下单管理系统(SpringBoot前后端分离) 之 SpringBoot后台管理+Uniapp(混合APP)前端 SpringBoot前后端分离项目-Thymeleaf模板引擎景区旅游管 ...

  10. 【两万字图文详解】 运动会管理系统-前后端分离-项目开发:【后端】SpringBoot, SpringMVC, MyBatis【前端】Vue.js,ElementUI

    项目名称:运动会管理系统  技术栈:      后端:SpringBoot,SpringMVC,MyBatis,tkmapper,Maven聚合工程等      前端:Vue.js,Element-u ...

最新文章

  1. 把Lumia 610C作为3G路由器
  2. Campus Address
  3. 转:Flash与.NET的通信(一):XMLConnector的应用
  4. Mysql带返回值与不带返回值的2种存储过程
  5. .htaccess防盗链方法
  6. linux下ip协议(V4)的实现(一)
  7. 【工程项目经验】之Xcode的Instruments检测解决iOS内存泄露
  8. cocos2dx基础篇(24)——基本动画CCAnimation/CCAnimate
  9. 苹果cms mysql 什么版本_分享如何使用阿里云ECS快速搭建CMS网站
  10. python pip 删除所有包
  11. EEGLAB在MATLAB中的下载、安装教程
  12. C语言-简介及IDE介绍
  13. Log4j漏洞及解决方案,亲测
  14. 坚果pro3刷miui_锤子科技坚果Pro 3(12GB/256GB/全网通)手机卡怎么办?
  15. Delete出错分析总结(个人总结很到位) 0x0000007ff64426f87e(ucrtbased.dll)处(处于dataa.exe中)引发的异常:
  16. 中段尾段全段什么意思_排气管中段 尾段 全段 和芭蕉 是什么意思
  17. light7ui 刷新子页面 js不能加载的问题
  18. FFmpeg屏幕录制
  19. Deep Nets Sublinear Memory Cost 笔记
  20. 学习ARM开发(6)

热门文章

  1. Turbo码原理简介
  2. HTTP详解(1)-工作原理
  3. Python实现基于模块的库存管理系统
  4. 基于JAVA的超市库存管理系统
  5. 计算机主板电池拆卸,主板电池没电了会怎么样 电脑主板电池怎么拆换【详解】...
  6. python毕业设计作品基于django框架 景区购票系统毕设成品(6)开题答辩PPT
  7. html国庆节代码,QQ空间国庆节留言代码_祝大家国庆节快乐
  8. ERP物料信息编码体系的研究与实践
  9. C语言经典程序100例
  10. 分享12个Python项目教程,看完随便拿!