为什么需要接口管理平台

前言

随着web技术的不断发展,互联网产品的开发模式也从原始的后端逻辑为主发展到前端后端移动端三分天下的局面。因此,后端如何能提供更多、更灵活的服务给其他同学(前端|移动端|其他三方)成为了开发者的问题,相对于其他rpc服务,http这样的无状态协议成为了开发者的选择,restful,graphQL因此成为现阶段开发的主流,从而激发了前后端分离浪潮,让各端同学各司其职、分工协作被细化,从而提高了编码效率;

现状

但是,使用基于http服务的接口来进行开发,也带来了一些额外的问题,其中之一就是随着业务功能的不断增多,后端同学提供出来的api也会越来越多。

试想这样一个例子:当我们的产品同学提出,要修改一个一年前上线的功能,这个时候前后端要怎么做,我们只能先看看代码,看对应的接口是用来做什么的,返回了什么字段,对应字段和数据库是怎么对应的来猜出其的意义,然后想想该如何修改,等开发完成后在通知测试进行测试。

在这个流程中,前端以及测试基本处于黑盒状态,无法知道所提供的接口里面具体需要的东西,经常遇到问题是接口因未知原因增加参数了,参数名变了,参数被删除了,这也给前端和测试带来了很多麻烦。

基于上面的问题,发展出了基于wiki、word等文档接口记录方式,我们通过在文件记录接口的方式将接口存档,以便下次查看和修改,可能部分同学的接口文档向这样

image.png

这样初步对接口进行了简单的管理,不论是新人,历史接口都能很快的去理解接口的作用,但是文件的管理方式也并没有完全的解决以下几类问题

  1. 无法复用数据模型,依赖于复制粘贴的方式

前端同学应该都能感受到,后端提供出来的不同的接口可能会依赖相同的数据结构,通过文件管理,那么我们就会大量的复制粘贴,影响整体管理效率。

  1. 无法提供便捷的查询方式

文件系统困扰是我们只能通过ctrl+f的形式来查询具体关键字,同时也不能模糊,拼音缩写等形式,后期接口增多,难以快捷的查询自己

  1. 难以进行接口版本管理

互联网崇尚的是敏捷开发,会将功能通过不同迭代的方式,逐步完成开发,因此文件系统如果要进行版本,可能最好的方式就是分文件,可是分文件的又会带来查询不变的问题

  1. 不能进行数据Mock

对前后端分离而言,前后端定义了接口后,前端同学一般会根据接口返回的数据接口模拟一份数据出来便于本地开发,但是,这样的模拟并不方便,开发和联调可能需要2套不同的代码,改起来非常恶心

  1. 无法利用以定义的接口进行自动化接口测试

基于文本的原因,我们定义的接口并不能利用系统进行自动化接口测试(当然自行编写是可行的)

改进

针对以上现状,不愿意做出重复劳动的开发同学开始针对这样的这种场景,开发了接口管理平台,现在市面上常用的有YApiSwagger等,这里不在赘述,今天我来介绍一款笔者常用的接口管理平台nei

这个平台是网易云音乐开发,在内外部也承接了各种各样的业务,可以放心应用与各种各样的接口管理场景

通过打开官网我们知道NEI提供了以下的基础服务

image.png
  1. 接口规范

即我们常见的接口定义,我们通过定义数据模型以及配置数据生成规则[可选]来对接口进行定义

  1. 团队协作

在nei平台之中,可以方便的给团队成员赋能,以提供各式各样的操作阅读权限

  1. 工程规范

nei提供了工程规范模板,可以方便的自定义自己的规范来快速导出项目

  1. 构建工具

平台提供了自动构建工具,可以自动开启本地接口服务,渲染ejs,ftl等页面模板

  1. 接口Mock

接口管理平台的核心功能了,在前后端分离项目,数据的快捷mock可以无缝的进入业务开发

  1. 接口测试

接口测试功能可以简单的对线上、测试环境进行接口测试,判断接口返回是否和定义类型相同

简单体验

注册完账号后,我们可以在项目管理中新建一个项目,如test


创建项目.gif

我们的接口,数据模型等都是基于该项目来创建,同时我们也可以额针对该项目设置对应的项目规范等,现在我们来创建一个简单接口


创建接口.gif

在接口创建中,我们可以针对设置该接口的类型,url,请求方式,参数等。

那么,这个接口对前端而言,要如何使用呢?我们可以通过使用平台配套工具nei-toolkit,将线上定义的接口模型mock到本地的方式进行使用我们首先安装该工具

npm install nei –g

使用nei-toolkit功能时,我们需要给我们的项目设置工程规范,这里我们创建一个简单的java工程规范并指定mock目录

创建绑定工程规范.gif

随后执行以下命令

nei build -key xxx

key具体值可以在项目设置中找到


image.png

执行完成后我们可以在目录中找到这样的目录结构


image.png

最后的server.config.js就是我们配置的接口以及相关的返回数据了

我们在执行该命令,即可将对应接口服务器启动起来

nei server -o ./

image.png

我们就可以看到我们定义的接口以及页面,点击对应的连接我们就可以直观的看到对应的数据

image.png

那么这些数据对前端而言,在开发时要如何使用?

  1. 基于webpack-dev-server, 我们可以在poxy配置中,将匹配头代理到localhost:8002上
  2. 基于本地nginx,我们也可以对具体接口代理到本地的localhost:8002上
  3. 如果不是用nginx或者不是webpack-dev-server,我们可以用charles来对接口进行代理,代理到本地具体文件(nei生成的本地文件,如图)
image.png

后记

当然,nei还有很多功能比如单元测试,比如接口规范,团队管理等,这里就不在演示了,本文主要是为了解决前后端分离开发的接口问题而写的文章,也欢迎大家将自己的解决方案共享出来,如果文章对你有用,不妨点个关注,谢谢啦!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 前言 在开始本文之前,需要声明以下关键词: 1.mock测试: mock测试就是在测试过程中,对于某些不容...
    apiaoqzh阅读 667评论 0 1
  • NEI网址 NEI使用文档 1. 注册完进入NEI界面是下面这样的: 2. NEI 工程规范介绍 3. NEI传给...
    IT狗视界阅读 4,614评论 0 4
  • 1. 前言 随着互联网的高速发展,前端页面的展示、交互体验越来越灵活、炫丽,响应体验也要求越来越高,后端服务的高并...
    guanguans阅读 858评论 0 4
  • 阅读之前 希望你能有以下基础,方便阅读: ECMAScript 6 (ES6) 为什么需要Mock 这样的场景,相...
    三木santree阅读 4,455评论 0 5
  • 1. 前言 随着互联网的高速发展,前端页面的展示、交互体验越来越灵活、炫丽,响应体验也要求越来越高,后端服务的高并...
    七寸知架构阅读 23,780评论 20 154