首页 > 其他分享 >前后端分离之接口设计规范

前后端分离之接口设计规范

时间:2023-04-21 21:57:28浏览次数:37  
标签:code 请求 分离 接口 设计规范 message data name

如何做分离 

职责分离

  • 前后端仅仅通过异步接口来编程
  • 前后端都各自有自己的开发流程,构建工具,测试集合
  • 关注点分离,前后端变得相对独立并松耦合

开发流程

  • 后端编写和维护接口文档,在 API 变化时更新接口文档
  • 后端根据接口文档进行接口开发
  • 前端根据接口文档进行开发 + Mock平台
  • 开发完成后联调和提交测试

Mock 服务器根据接口文档自动生成 Mock 数据,实现了接口文档即API:

接口规范

规范原则

  • 接口返回数据即显示:前端仅做渲染逻辑处理;
  • 渲染逻辑禁止跨多个接口调用;
  • 前端关注交互、渲染逻辑,尽量避免业务逻辑处理的出现;
  • 请求响应传输数据格式:JSON,JSON数据尽量简单轻量,避免多级JSON的出现;

基本格式示例

下文开始给出一个前后端交互数据的基本示例,具体大家可以根据自己的业务或者编码习惯做些许调整,切勿拘泥于文中示例!

  • 请求基本格式

所有请求数据包装为JSON格式,示例如下:

GET请求:
xxx/login?body={"username":"admin","password":"123456","captcha":"scda","rememberMe":1}

POST请求:

  • 响应基本格式
{
  code:200,
  data:{
  	message:"success"
  }
}

code:表示请求处理状态,示例值如下:

200: 请求处理成功
500: 请求处理失败
401: 请求未认证,跳转登录页
406: 请求未授权,跳转未授权提示页

data.message: 表示请求处理消息:

code=200 且 data.message="success": 请求处理成功
code=200 且 data.message!="success": 请求处理成功, 普通消息提示:message的内容
code=500: 请求处理失败,警告消息提示:message的内容

  • 响应实体格式
{
  code:200,
  data:{
  	message:"success",
    entity:{
    	id:1,
      name:"madder",
      "age":28,
      "sex":2
    }
  }
}

data.entity: 响应返回的实体数据

  • 响应列表格式
{
  code:200,
  data:{
  	message:"success",
    list:[
      {
        "id":1,
        "name":"tony",
        "age":28,
        "sex":1
      },
      {
        "id":2,
        "name":"Jerry",
        "age":30,
        "sex":2
      }
    ]
  }
}

data.list: 响应返回的列表数据

  • 响应分页格式
{
  code:200,
  data:{
    recordCount:2,
  	message:"success",
    totalCount:2,
    pageNo:1,
    pageSize:10,
    list:[
      {
        "id":1,
        "name":"tony",
        "age":28,
        "sex":1
      },
      {
        "id":2,
        "name":"jerry",
        "age":30,
        "sex":2
      },
     {
        "id":3,
        "name":"pines",
        "age":35,
        "sex":1
      }
    ],
    totalPage:1
  }
}

data.recordCount: 当前页记录数

data.totalCount: 总记录数

data.pageNo: 当前页码

data.pageSize: 每页大小

data.totalPage: 总页数

  • 特殊内容规范

下拉框、复选框、单选框

由后端接口统一逻辑判定是否选中,通过isSelect标示是否选中,示例如下:

{
  code:200,
  data:{
  	message:"success",
    list:[
      {
        "id":1,
        "name":"madder",
        "age":28,
        "sex":2,
        "isSelect":1
      },
      {
        "id":2,
        "name":"pines",
        "age":30,
        "sex":1,
         "isSelect":0
      }
    ]
  }
}

禁止下拉框、复选框、单选框判定选中逻辑由前端来处理,统一由后端逻辑判定选中返回给前端展示;

  • Boolean类型

关于Boolean类型,JSON数据传输中一律使用1/0来标示,1为是/True,0为否/False;

  • 日期类型

关于日期类型,JSON数据传输中一律使用字符串,具体日期格式因业务而定;

标签:code,请求,分离,接口,设计规范,message,data,name
From: https://www.cnblogs.com/liucs/p/17341923.html

相关文章

  • Spring Data Jpa 接口方法名
    SpringDataJpa系列教程(一)--------入门 现在开始,我们来学习船新的一门技术,SpringDataJpa,它是一个。。额。。(我百度一下) JPA(JavaPersistenceAPI)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。他的出现主要是为了......
  • 抽象类与接口
    接口接口用来描述类应该做什么,而不是指定它们具体应该如何做 主要用于定义规范一个类可以实现多个接口接口中所有方法自动是publicabstract  不必显示声明接口不会有实例字段,字段默认添加 publicstaticfinal修饰 即常量接口不能有初始化块、构造器子类实现接......
  • Java-Day-13(抽象类 + 接口 + 内部类)
    Java-Day-13抽象类(abstract)当父类的某些方法需要声明,但是又不确定如何实现时(主要在于子类的重写时),可以将其声明为抽象方法,那么这个类就是抽象类所谓抽象方法就是没有实现的方法,而所谓没有实现就是指没有方法体当一个类中存在抽象方法时,需要将该类声明为abstract......
  • 部署Spring Boot + React前后端分离中的奇特发现
    今天在尝试在服务器上部署SpringBoot+React前后端分离应用时有一个奇特的发现。服务器首先是前端npmrunbuild之后,将构建好的应用移动到/var/www/html文件夹,nginx启动可以正常访问,axios接口访问地址为localhost:8080;后端maven构建并运行。本地电脑同样开始运行前后端。......
  • Spring cloud:开发接口
    @RequestBody支持json格式,前端传过来某类型的数据,后端直接可以用@RequestParam?id=1此类传参,有时候会导致类型不能转换错误例如,前端页面分页,传过来的page、size,在地址栏显示,路径后?id=xx ,两个数据明显是int,如果用了@RequestParam接收多个参数后端以Map接收,不能直接接收,且报类型......
  • ZLMediaKit实现按需拉流时rtsp流地址不对addStreamProxy返回0,接口流id参数踩坑记录
    场景开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130136245基于上面实现拉取视频流预览时,发现当调用api传参时如果更换了rtsp视频流地址,但是没有更改......
  • 速卖通网站使用群体分析及常用接口数据返回展示
    用户群体分析随着电子商务的快速发展,速卖通已经成为全球最大的跨境电商平台之一。作为一个面向全球消费者的在线市场,速卖通网站的使用群体是非常广泛的,因此对于速卖通网站的使用群体分析是非常必要的。本文将从以下几个方面对速卖通网站的使用群体进行分析。一、用户画像  年龄......
  • 对外接口Set,可以限制非法时间值
    类作为"零件"的载体,有内部属性(private),有对外接口(public),内部属性的数据成员或函数成员,仅仅供给class内部函数成员使用,不对外开放,public规定的对外开放的接口。设置Cmytime类。具有两个成员函数int Set(inth,intm,ints)对于Set函数的要求,   1、对于非法赋值不给予......
  • HDU 1869 六度分离
    六度分离TimeLimit:1000MS     MemoryLimit:32768KB     64bitIOFormat:%I64d&%I64uSubmit Status Practice HDU1869Description1967年,美国著名的社会学家斯坦利・米尔格兰姆提出了一个名为“小世界现象(smallworldphenom......
  • 01. 接口测试基础知识概要
    01.接口测试基础知识概要概要软件接口的分类:软件内部模块与模块之间的接口、不同平台间的外部接口常见接口:HTTP协议:最广泛;常用JMeter和Postman工具来测试WebService接口:使用soap协议,通过http传输,一般是xml格式,常用SoapUI工具测试什么是接口测试:基于某种协议,模拟客......