前后端对接及接口管理平台浅析

article/2025/9/22 20:56:44

文章目录

      • 一、接口是什么(附带简易案例)
      • 二、Tomcat的Servlet
      • 三、json
      • 四、接口文档:
      • 五、管理平台

每一个完整的项目都是不是一个人的功劳,是一个团队的心血!那么在这个项目从无到有的过程中,一个团队是如何凝聚呢?如何共享信息呢?会议及活动是如何开展呢?前端和后端又是如何对接的呢?

在刚刚收到项目时,我有很多问号?其中最大的一个就是接口是个什么鬼,我相信大家也或多或少有这个想法。随着学习的逐渐深入,它神秘的面纱似乎也在一层层的揭开,我们开始接触到了postman等接口测试工具,但这还是不够直观。其实最好的理解在于实践,再多的文字介绍也不如真实和前端小姐姐对接一下的效果好!(但文字还是要有的)

为什么需要分离呢?

随着技术的不断进步,对前端后端的要求也不断升级。前端的展示业务、要求、质量、交互体验越来越灵活、炫丽,响应体验也要求越来越高,工作量越来越繁重!而后端责着重提供各种服务以及高并发、高可用、高性能、高扩展等。

由此导致了前后端分离。各自专注于自己负责的模块。详情参考

一、接口是什么(附带简易案例)

由于目前项目采用SpringMVC架构,后台接口就是servlet,我们事实上可以将接口理解为servlet(不知道还有没有其他类型的,如果还有其他请积极指正)。那么servlet又是什么呢?

servlet

简单的说servlet就是跑在web服务器中的小Java程序,是Java中的类,用来接受和相应网页传过来的东西,主要是http。

这里暂时不介绍servlet的详细用法,有需求的同学可以参考这篇https://blog.csdn.net/chachapaofan/article/details/82631841,这里用一个简单的案例来说明(因为技术原因,只能jsp来演示调用接口,需要用到ajax详细介绍,前端的调用本质上类似)如果是要用axios,请参考靳紫澜同学博客

还是先介绍概念: XMLHttpRequest 对象的三个重要的属性:

属性描述
onreadystatechange存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
readyState存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。 0: 请求未初始化 1: 服务器连接已建立 2: 请求已接收 3: 请求处理中 4: 请求已完成,且响应已就绪
status200: “OK” 404: 未找到页面

在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。

方法描述
open(method,url,async)规定请求的类型、URL 以及是否异步处理请求。 method:请求的类型;GET 或 POST url:文件在服务器上的位置 async:true(异步)或 false(同步)
send(string)将请求发送到服务器。 string:仅用于 POST 请求
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--><script>// 在页面的 head 部分添加一个 <script> 标签。该标签中包含了这个 TestAjax() 函数function TestAjax(){//var 是创建变量var xmlHttp;// 所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。// XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。// 如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject :if (window.XMLHttpRequest) {//  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码xmlHttp = new XMLHttpRequest();} else {// IE6, IE5 浏览器执行代码xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");}xmlHttp.onreadystatechange = function(){//当 readyState 等于 4 且状态为 200 时,表示响应已就绪:readyState是XMLHttpRequest的一个属性if (xmlHttp.readyState==4 && xmlHttp.status==200) {document.getElementById("sp").innerHTML = xmlHttp.responseText;}}
//这个地方在地址后设置了一个属性name=LiGuorui,在servlet中会用到xmlHttp.open("GET", "/servlet2/TestAjax?name=LiGuorui", true);xmlHttp.send();}</script>
</head><body>
<%--当按钮被点击时,它负责调用名为 TestAjax() 的函数--%>
<button onclick="TestAjax()">利用Ajax获取数据</button> <br>
<span id = "sp"></span></body>
</html>

servlet

@WebServlet(name = "TestAjax",urlPatterns = "/servlet2/TestAjax")public class TestAjax extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public TestAjax() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubresponse.setCharacterEncoding("UTF-8");PrintWriter out = response.getWriter();out.println("Hello " + request.getParameter("name"));out.flush();}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}
}

二、Tomcat的Servlet

img

由上图可以看出Tomcat最顶层的容器是Server,代表整个服务器。一个Server可以包含至少一个Service,用于提供服务。

Service主要有两大核心组件,Connector和Container。Connector主要负责对外交流,而container则是处理内部事务。一个Service可以有多个Connector,但只能有一个Container。

多个 Connector 和一个 Container 就形成了一个 Service,有了 Service 就可以对外提供服务了,再加上生存环境Server。整个 Tomcat 的生命周期由 Server 控制。

三、json

Java中并没有内置JSON的解析,因此使用JSON需要借助第三方类库。

下面是几个常用的 JSON 解析类库:

  • Gson: 谷歌开发的 JSON 库,功能十分全面。

  • FastJson: 阿里巴巴开发的 JSON 库,性能十分优秀。

  • Jackson: 社区十分活跃且更新速度很快。

  • 1.1:JSON对象

    我们先来看以下数据:

    {"ID": 1001,"name": "张三","age": 24
    }
    

    第一个数据就是一个Json对象,观察它的数据形式,可以得出以下语法:

    1:数据在花括号中

    2:数据以"键:值"对的形式出现(其中键多以字符串形式出现,值可取字符串,数值,甚至其他json对象)

    3:每两个"键:值"对以逗号分隔(最后一个"键:值"对省略逗号)

    遵守上面3点,便可以形成一个json对象。
    1.2:JSON对象数组

    接下来我们再看第二个数据,观察它的数据形式,可以得出以下语法:

    [{"ID": 1001, "name": "张三", "age": 24},{"ID": 1002, "name": "李四", "age": 25},{"ID": 1003, "name": "王五", "age": 22}
    ]
    

    1:数据在方括号中(可理解为数组)

    2:方括号中每个数据以json对象形式出现

    3:每两个数据以逗号分隔(最后一个无需逗号)

    遵守上面3点,便可形成一个json对象数组(及一个数组中,存储了多个json对象)

    理解了上面两种基本的形式,我们就可以得出其他的数据形式,例如下面这个:

    {"部门名称":"研发部","部门成员":[{"ID": 1001, "name": "张三", "age": 24},{"ID": 1002, "name": "李四", "age": 25},{"ID": 1003, "name": "王五", "age": 22}],"部门位置":"xx楼21号"
    }
    

    这是上面两个基本形式结合出来的一种变形,通过这种变形,使得数据的封装具有很大的灵活性,能让开发者自由的发挥想象力。

    1.3:JSON字符串

    Json字符串应满足以下条件:

    1. 1它必须是一个字符串,支持字符串的各种操作
    2. 里面的数据格式应该要满足其中一个格式,可以是json对象,也可以是json对象数组或者是两种基本形式的组合变形。

    总结:json可以简单的分为基本形式:json对象,json对象数组。两种基本格式组合变形出其他的形式,但其本质还是json对象或者json对象数组中的一种。json对象或对象数组可以转化为json字符串,使用于不同的场合。

    Fastjson

    在fastjson包中主要有3个类,JSON,JSONArray,JSONObject

    三者之间的关系如下,JSONObject和JSONArray继承JSON,JSONObject代表json对象,JSONArray代表json对象数组,JSON代表JSONObject和JSONArray的转化。

    这里主要介绍两种转化方法

    JSON类之toJSONString()方法,实现json对象转化为json字符串和javabean对象转化为json 字符串
    
    JSON类之JSONArray()方法,实现json字符串转化为json对象数组或List<T>
    
    public class Changing {/**将集合转换为json格式的数据*/public String toJson(List list){String str = JSON.toJSONString(list);return  str;}/**将json格式的数据转化为泛型为Notes类的集合*/public List<Notes> JsonChange(String str){List<Notes> notes = JSON.parseArray(str,Notes.class);return notes;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);Changing changing = new Changing();List<Notes> notes = changing.JsonChange(sc.next());for(int i=0;i<notes.size();i++){System.out.println(notes.get(i).toString());}List<Notes> notes1 = new ArrayList<Notes>();Notes notes2 = new Notes(1,"测试","hhh","yes","moren");notes1.add(0,notes2);System.out.println(changing.toJson(notes1));//[{"category":"moren","content":"hhh","hasOpen":"yes","noteId":1,"title":"测试"},{"category":"moren","content":"hhh","hasOpen":"yes","noteId":1,"title":"测试"}]}
    }
    
    /*输入
    [{"category":"moren","content":"hhh","hasOpen":"yes","noteId":1,"title":"测试"},  {"category":"moren","content":"hhh","hasOpen":"yes","noteId":1,"title":"测试"}]*/
    /*输出的
    Notes{noteId=1, title='测试', content='hhh', hasOpen='yes', category='moren', creatTime='null', source='null'}
    Notes{noteId=1, title='测试', content='hhh', hasOpen='yes', category='moren', creatTime='null', source='null'}
    [{"category":"moren","content":"hhh","hasOpen":"yes","noteId":1,"title":"测试"}]*/
    

四、接口文档:

在项目开发中,web项目的前后端是分离开发的。应用程序的开发,需要由前后端工程师共同定义接口,编写接口文档,之后大家都根据这个接口文档进行开发,到项目结束前都要一直维护。不同的项目有自己文档的规定,但大体上不会偏差太多,我就介绍自己的理解吧!

接口名称场景(接口)说明url请求信息响应信息错误码
顾名思义是给前端一个最直观的影响,这个接口是做什么的描述这个接口的现状,未开始、开发中、测试中。以及接口的用法,比如发送一个什么样的数据响应什么样的数据前端请求地址。url地址里不允许出现大写字母,如果是两个单词拼接,用/分开信息包含请求头,请求参数,范例展示信息包含响应头,响应参数,范例展示名称
描述
原因
解决方案

请求头(某些请求格式不同需要设置响应的请求头)

名称默认值描述
Content-Typeapplication/json-
Host-

请求参数

名称类型描述必须默认值
参数名String、Number、Object、Array四大类这个参数的作用是什么,可以提供一个范例是否必须有值按自己需求

响应信息类似

五、管理平台

传统的管理通过聊天平台,前后端的接口文档是用word或其他形式来完成,这样的接口文档没有实时性,做起来费时,看起来也不方便。

所以有了对接口文档和接口测试一体化的强烈需求,自然接口管理平台就诞生了!

我的小组目前使用NEI接口管理平台,所以也主要介绍一下NEI接口管理平台。

接口管理平台(Netease Easy Interface),简称 NEI。

NEI 虽然叫接口管理平台,但其实不只是管理接口,它可以管理整个产品,也具备项目脚手架的功能。

初始界面NEI可以创建项目组,在项目组中可以创建各自负责部分的分项目
在这里插入图片描述
最重要的是可以在线生成接口文档
在这里插入图片描述
在这里插入图片描述
还有打印功能哦!这个平台还附带测试接口,测试用例,以及测试报告等一系列功能,可以说很全面了!但缺点是这个平台上线时间不长,可能相关的教程不多,用户也不多!

其他的接口管理工具也推荐一下!大家可以根据需要使用

  1. 阿里rap
  2. NEI
  3. Postman
  4. Thoughts
  5. Swagger

参考文章——接口概念
参考文章——Tomcat结构
参考文章——json
参考文章——接口文档


http://chatgpt.dhexx.cn/article/nF5Dd2bF.shtml

相关文章

如何搭建一个自己的接口自动化测试平台

0、实现方式 后端&#xff1a;java前端&#xff1a;vueelement-uimock&#xff1a;mock-server其它&#xff1a;redis 感谢大家的莅临&#xff0c;小编在文章末尾为大家准备了一些福利&#xff0c;需要的可以获取哦。 1、数据构建 ​ 我们在测试过程中发现测试数据的构建非…

6 个常用的 API 接口在线管理平台

点击关注公众号&#xff0c;架构干货及时送达 上一篇&#xff1a;腾讯开发团队又一开源利器发布&#xff01; 1.EOLINKER&#xff08;推荐&#xff09;可以协作&#xff0c;界面简洁 地址&#xff1a;https://www.eolinker.com/#/?statuslink-jump 2.RAP&#xff08;前阿里妈妈…

接口管理平台YApi坑死我了(超级详细实操教程) - 421篇

历史文章&#xff08;累计400篇文章&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 你真的学会了Lambda表达式了吗&#…

API接口开放平台

近期服务器不想在维护了&#xff0c;接口已经陆续开放 服务器也经常奔溃&#xff0c;一分价钱一分货 忠告&#xff1a;出了事情要学会使用法律武器保护自己 主要推荐初步入门学习的伙伴&#xff0c;可以借助这些接口丰富自己的站点 API接口包括&#xff1a; 一、资讯 全网热…

Yapi接口平台个人总结

YApi是去哪儿移动架构组开源的API管理系统&#xff0c;是一款api管理平台。 一&#xff0c;yapi相关信息与教程 官网地址&#xff1a;https://yapi.ymfe.org/ 示例地址&#xff1a;http://yapi.demo.qunar.com/ 使用教程&#xff1a;https://hellosean1025.github.io/yapi …

百度ai平台接口使用记录

前一段时间在做毕业设计&#xff0c;打算做一些风格转换相关的项目&#xff0c;想自己制作一份数据集用于训练&#xff0c;于是发现了百度ai平台提供的api接口可以实现“人脸动漫化”、“图像风格转换”等功能。按照一定步骤操作后&#xff0c;只要通过post请求就可以将本地的图…

API接口管理平台源码thinkPHP

API接口管理平台源码thinkPHP 安装步骤&#xff1a; 1.数据库信息配置在路径【config/database.php】文件中 2.导入根目录下的【data.sql】数据库文件 3.设置网站运行目录为根目录【public】 4.目录 后台地址 /admin/login.html 账户 admin 密码 123456 测试截图 后台截…

通用接口开放平台设计与实现——(2)功能架构

前面说过&#xff0c;接口开放平台主要有两部分功能组成&#xff0c;一是处于主体地位的API接口&#xff0c;对外提供数据服务&#xff1b;二是处于辅助角色的消息服务&#xff0c;用于通知数据变动。 实际上&#xff0c;客观上还需要平台自身管理功能&#xff0c;来维护平台的…

接口测试平台(一)

需求描述&#xff1a; 测试的项目使用内部加密的算法&#xff0c;普通的接口测试测试工具(Jmeter/PostMan/HttpRequest)不能满足&#xff0c;同时满足接口的自动化测试&#xff0c;用例集为1个业务场景为单位进行测试。请求方式中多一种post加密&#xff0c;同时数据比较多结构…

2022盘点工作室常用的API数据接口开发平台

果创云 果创云&#xff08;http://YesApi.cn&#xff09;&#xff0c;是一个低代码数据接口开发平台&#xff0c;为工作室提供“开箱即用”的数据API接口。 当工作室需要开发自己的小项目、脚本、小程序、管理后台时&#xff0c;可以使用果创云低代码接口平台&#xff0c;快速…

超强接口协作平台如何打造:细数Apifox的六把武器

前言&#xff1a;推荐一款免费而强大的接口协作工具&#xff0c;感兴趣的小伙伴儿自行前往官网尝鲜 1 关于接口协作平台的畅想 软件界发展至今&#xff0c;API&#xff08;接口&#xff09;的重要性日益凸显——不同的端&#xff0c;不同的模块都在通过API交互&#xff0c;不…

python 调用企查查接口平台

一、需求&#xff1a; 通过内部系统导出企业信息数据后&#xff0c;筛选状态为“正常”的企业数据。然后拿筛选后的企业去查询该企业的工商数据。 开始是在国家企业信息公示系统中查询&#xff0c;由于查询数据量过大&#xff0c;后改用从企查查接口平台&#xff0c;通过接口获…

Mock.js数据模拟,rap2、postman可视化接口平台,Vue框架的接口链接应用

前言&#xff1a; 作为一名前端程序员&#xff0c;其工作不仅仅是制作出精美的界面&#xff0c;实现页面之间的顺利转跳&#xff0c;各种交互。最主要的工作就是将后端所提供的数据通过合理地接收&#xff0c;应用在页面上&#xff0c;呈现在用户面前&#xff0c;从而使用户能…

IDEA开发工具整合YAPI接口平台

IDEA开发工具整合YAPI接口平台 目录 1 前提 1.1 代码规范 1.2 注释模板需统一 2 使用YapiUpload插件 2.1 下载YapiUpload插件 ​2.2 配置 2.3 idea代码中添加注释 ​2.4 idea推送到YAPI 3 使用EasyYApi插件 3.1 下载…

十大api接口平台(接口商)

一、百度api集市 1136个数据服务接口 网址&#xff1a;http://apistore.baidu.com/ 二、聚合 144个数据服务接口 网址&#xff1a;https://www.juhe.cn/ 三、华付数据 32个实用的数据服务接口&#xff0c;以精准&#xff0c;稳定在行业立足。 网址&#xff1a;http://h…

统一接口平台

1产品介绍 前端应用系统通过统一接口平台获取数据&#xff0c;不直接与外部系统接口打交道。统一接口平台通过多种方式与外部系统联接获取数据并向各前端应用系统提供各种数据格式包&#xff0c;将外部系统有效地隔离在业务系统之外。前端应用系统需要请求的外部接口需要在统一…

接口开放平台,我的一些思考

1. 概述 接口开放平台&#xff0c;为访问者提供统一的URL作为唯一访问入口&#xff0c;参数中指定具体接口标识和接口参数。它的优点包括接口规范性、效率、管理能力。接口开放平台可以分为简单的和复杂的两种方式。简单的接口开放平台&#xff0c;由自身提供接口实现。复杂的…

通用接口开放平台设计与实现——(1)开篇

首先简单聊下背景&#xff0c;大概是几年前&#xff0c;工作中遇到这么一个复杂的应用场景&#xff0c;大型企业中的物流系统&#xff0c;需要跟众多的内外部系统交互&#xff0c;对接的系统达到十几个&#xff0c;接口数量在50个左右&#xff0c;并且后续还会大量增加新的对接…

六大接口管理平台,总有一款适合你的!

前后端分离绕不开的接口测试 先聊一聊前端和后端分离的优点。前后端分离优点如下&#xff1a; 真正的实现前后端解耦&#xff0c;前端服务器使用 nginx&#xff1b;易于发现bug&#xff0c;可以快速定位是谁的问题&#xff0c;不会出现互相踢皮球的现象&#xff1b;减少后端服…

2022中国十大API接口服务平台排行榜(推荐五颗星)

Api接口也就是所谓的应用程序接口&#xff0c;api接口的全称是Application Program Interface&#xff0c;通过API接口可以实现计算机软件之间的相互通信&#xff0c;开发人员可以通过API接口程序开发应用程序&#xff0c;可以减少编写无用程序&#xff0c;减轻编程任务&#x…