之前做了几期有关 tcb 握手和挥手的视频,有几个可能平时上课不怎么认真的同学来干,我说自己做吸收可编程的时候并没有设计这些握手和挥手的细节,并 至于这些过程是否真的存在,这部分同学可能平时没有好好上课学习,并不了解什么是 osi 五成模型。数据在网络传输过程中,会经过五个不同层次的分层,在每个分层中,数据表现形式是不一样的。 在应用城中,数据可能是以文本的形式存在的。在传输城中,数据则是以爆本的形式存在的。在网络城中则表现为 ip 数据包,在电路城中则表现为数据真。在物理城中则是以比特流的形式,最终转化为电和光信号输出到例如屏幕这样的装置上, 尝试给我们观看。说给代码编程,其实是利用超速系统提供的 api 进行的应用层编程, gp 爆完,这是属于传输层。传 书城的具体传输过程其实是由操作系统来替我们完成的,对应用城开发者来说是透明无感知的,因为传书城是应用城的下一层,因此如果没有传书城的支撑, 用城市根本没有办法发起网络传输的。所以大家在遇到自己不认识的知识点的时候,先去查阅一下是不是遇到自己的知识盲点了,不要做一个无知者无畏的人。关注我,学头发茂密的知识。
粉丝3221获赞1.4万

apm 是什么?百度上面可能会说 apm 是什么预先定义的函数啊?或者说什么软件系统不同组成的衔接约定啊?其实这里面有点深色难懂,我给你举一个例子啊,就比如说平时我们在网上买东西,对吧?商家会给我们发货 啊?这个时候你能够在这个淘宝上,对吧?看到这个物流的一个进展信息,对吧?因为这是淘宝公司跟快递公司,他们作为两家公司合作的一个产物,对吧?那我们想在淘宝上看到快递的一个信息, 这边就需要是个 ap i 了,对吧?你想查快递的时候呢?淘宝可能说给快递公司那个网站去传递一些参数,然后比如传一个 id, 又传你的姓名,然后就能够拉到你这个订单下面的一个物流状态,对吧?这也是我们常说的 app。 那再个例子,就比如说我开发了一款软件,对吧?叫,哎,好了,那我的朋 朋友开发一个人叫 b, 那我朋友想调用我这款软件的部分功能来用,对吧?但是其实我又不可能把原码给他,但是他也不必要去看我的原码,对吧?所以这个时候我只需要去暴露一个接口,对吧?俗称 atm, 那么他就可以给我来传参数,来彼此调用我这里边的功能,好不好?

其实我们在实际的开发当中呢,我们不太会去使用这个原声的 a p i, 其实原声 a p i 里面呢,功能是绝对齐全的,大家可以去看这个 m d n 的文档,这里边有完整的就是它里边的用法啊,一些属性啊,方法其实也不多啊,也不多,但它功能肯定是齐全的,但为什么我们平时不太呃喜欢使用这个原声的 a p i 呢? 原声的接口呢,虽然简单,但是呢在实际应用中啊,会造成很多的麻烦。什么麻烦呢?比方说哈,我们现在考虑一个聊天场景这个页面呢,他有聊天,有实时聊天,同时呢也有开线, 于是呢,可能我们服务器啊,当然客户端那边也可能不断的发送消息给服务器,服务器呢,那边呢,也可能有不同,不停的有新消息过来,那么他的消息呢,比方说发了这么一些内容,你看一下,你能看懂他啥意思吗?这些内容全部全部在哪里接收,所以全部在 unic 里边接收,对吧?这里所有的消息都在这里统一接收,那这个接收消息到底是什么消息,你分不 清楚啊?那么这个数据就会造成这样的一个问题,连接双方可以在任何时候任发送任何的数据类型数据,另一方呢,必须要清楚这个数据到底是什么东西,对吧?那么福气可能可能给我发的是聊天啊,聊天的时候有哪些,聊天室里面有哪些人,对吧?然后呢,也有可能发的是一一个用户的发布的一个新的聊天内容, 也有可能呢发布的是呃,那个 k 线的最新价格,也有可能呢,有人离开了那个聊天室,那么他会把个聊天室里面的人重新更新,更新之后呢,再重新发给我们,就你分不清楚, 那么回忆一下啊,像如果说我们以前学的 atp, 那么 atp 是如何来解决这个问题的? atp 解决,解决这个问题的话是不是非常简单?怎么解决?是通过 pass 解决,你请求不同的路径,那么就表示你要不同的东西,对吧?这里是登录把,这里是获得新闻列表,通过路径来进行区分,但是很严 遗憾的是脱离了 attp 协议了,现在他没有路径了。哪有路径?他这个东西你看一下我们这里,那村口这里哪有什么路径啊?一旦握手完成之后就是全是这种消息了,哪有什么路径呢?什么头啊?那些东西全部没了啊,只有握手阶段在用 attp 协议的时候才有一个头,握手完成之后的消息再也没有什么头啊。题啊,这些东西都没有了, 那我如何来区分呢?朋友们可以想想办法啊。其实这个办法呢还是挺好想的,最简单的办法就是使用一些第三方库来帮我们解决这个问题。这个第三方库是什么呢? socket i o 啊,这是一个非常有名的微博收费者的第三方库,他是这样处理的啊,把不同的消息呢放到不同的事件里边。他这个事件呢,有哪些事件你需要自行约定?服务器跟客户端之间需要自行约定,他通过监听和触发事件来实现对不同消息的处理。什么意思?我现在下面一张图啊,比方说客户端这边他监听了三个事件, 那么我们这里比方说客户端和服务器之间约定了,我们一共有三个时间,一个是成员更新,就聊天室里边有哪些人啊?然后呢?是监听聊天消息,有没有新的聊天消息过来,然后呢监听最新的价格,贴心的最新价格,约定了有这么三个时间,客户端这边负责什么?负责监听 好服务器那边呢?就负责触发事件。触发事件什么意思?就是发送消息的时候呢?顺带我告诉你这个消息是哪个事件的, 那么比方说这个消息他就告诉你,哎,看这个颜色啊,我就告诉你这是一个成员共情世界,于是这个消息发到客户端那边,客户端那边就会触发这个事件的处理。客户端那边他写的代码呢?尾代码啊,可能是这个样子,也说服务器在触发时间,客户端在监听时间啊,服务器触发事件本质上就是发一个消息过来,附带一个事件类型, 那么他就会触发到这个事件,这个事件就会运行这个函数,对吧?然后第二次发了一个,你好,这是一个聊天消息事件,他就会触发这个函数。而第三次呢, 发了一个最新价格,他就会触发这个。第四次呢,发送那个又是一个成员更新,他又会触发成员更新这个,这个函数啊,他是这么一种逻辑,那是不是所有的事件都是客户端监听服务器触发呢?不是的,完全有可能,非常非常有可能服客户端那边也会发消息给服务器,对吧?那么客户端发消息给服务器,那就是客户端触发事件, 服务器又在监听客户端的时间,对吧?这双方他们地位是一样的,不存在说谁高一点,谁低一点,地位完全是一样的。所以说我们在一个微博 socket 的典型场景里边啊,像这种 socket io 的典型场景里边, 任何一方都有可能既监听事件,监听对方的事件,也会自己触发事件,自己发送消息。监听就是收,触发就是发啊,你理解清楚这个东西就行了。那么这样子做了过后呢,这个模型就比较完善了啊,我们就可以利用这种事件的机制,对不同的消息进行不同的处理,那么这个事件是 首要客户端和服务器双方事先约定好,那么这里呢,我们看看一下我们的聊天室接口,握手完成之后呢,他就靠事件啊,事件,你看这里有这么一些事件,需要在接口文档里边,或者是双方私下把他事件约定好。 sopetio 啊,就就这么一个第三方库,他就是实现这么一个效果,他为了实现这些要求呢,他对消息的格式啊,进行了特殊的处理, 他的格式呢,可能跟大家想象的不是一个普通的对象那么简单啊,他做了一些特殊的处理,那我说这一点是什么意思呢?就是如果说你服务器使用了 sokisio 这个库来进行触发事件发送消息,你客户端那边也必须使用这个库 啊。同样道理,你客户端那边是用 socket i o 来发送消息,服务器也必须使用 socket i o 啊,不能,不能说服务器用这个客户端就用这个,理论上是可以的啊,因为我 socket i o 本质上也就在调用这个,这个 a p i 理论上是可以的,但是这个就很麻烦了,因为 你要理解为手机 io 的他那个消息格式,那个很复杂的消息格式是怎么组成的啊,就有点分析就更麻烦了,所以说要用的话就双方一起使用,使用这个手机的 io 其实是非常简单的啊。这里呢,我先给大家说一下手机的 io 的一些注意的事项。使用的时候呢,我们要自行的约定事件,那么肯定要给事件取名字,但是有一些名字呢,你不能取, 有一些名字他是已经定义好的,叫做 message 啊,让 conte 这种名字有些特殊的名字啊,比方说这个 message 呢,就表示他对应到这个 websoke 里边的这种 message 啊,所以说有些事件名字呢是不能用的, 那我们在取事件的名字的时候呢,我们一般来说会加一个前缀,或者是你这个工程的名字啊,或者是怎么样,那我这里呢,比方说加一个多乱符号,这样子,避免跟那些预先定义好的事件名字发生冲突。把这个地方我给大家说一下。另外个地方大家了解一下, socket io 啊,功能非常强大呃,它不仅支持 服务器,还支持客户端,都支持啊,同时呢,他还对一版本的浏览器进行了兼容处理,就是如果说他发现这个版本,你这个浏览器版本太老了,比方说现在什么 i 浏览器,对吧?像版本太老的浏览器呢,如果说你不支持,我也不 socket, 那怎么办呢?他会转而使用长文询, 整个的那个 a p i 都是一样的,就是你不用改带嘛,他会转而使在内部,转而使用长轮循,他会有判断的啊。 然后手机的 io 还有很多的高级功能可以参与官方文章啊,我们这节课就不愁了,关注都已剪辑号的同学打断一下啊,我是袁老师,总听我讲短视频,这回呢,来听听我讲的大课。 我给大伙呢专门录制了一套大吃课,现在呢,免费送给你们,不管你手上现在看的是什么样的资料,都应该先停下来,先来看一看我这套大吃课。一方面呢,这套课程里边的内容都是前端最核心的 知识,其他的知识都是在这个基础上生长出来的,你先掌握好了这个,再学啥都事半功倍。而且呢,自此以后,你对前端技术的理解不会存在任何的障碍。 另一方面呢,这套课还能够提升你的眼光,让你具备分辨好坏的能力。看过大师课之后啊,有一些不入流的资料,课程 博客论坛你就看不上眼了,这种能分辨好坏的能力,也能够为你将来的学习省下不少的时间。所以呢,还没有领到课程的同学,赶快抓住免费领取的机会,进评论区第一条,加入粉丝群,然后根据提示领取就可以了。

好,我们来看一下 socket io 怎么去使用啊?我们这里呢,去新建一个页面页面吧。啊,在这里搜索一下 socket io, 好找到个 gs 啊,把这 gs 复制一下,好列进来,接下来怎么去使用呢?好,文档里边呢?他看他有一个服务器的 api, 一个客户端的 api, 对吧?我们现在又不编写服务器,所以说我们只看客户端的 api 就可以了。 那么 instory 型表什么意思呢?表示安装如何安装他,他会告诉你有哪些安装的方式。你可以使用 c d n, 对吧?我们刚才就使用的是 c d n 连接过来把,这也是连接过来就完事了,也可以使用 n p m 来安装啊,这里呢,用 n p m, 用幺二,用 p m, 对吧?你可以看到他安装的是哪个包? initialization, 这个表示什么意思?初始化, 初始化。如何是初始化呢?你看他有很多种方式啊。呃,首先你要得到一个 i o 对象,这个 i o 对象呢?如果说你直接在页面上引用 g s 呢?他直接就有了,也可以使用这个用 e s 六的方式,对吧?导入 有了这个 i o g 之后,你就可以创建一个 socket 对象,那么这个 socket 对象怎么去使用呢? the socket instance 表示这个 socket 对象啊,实力到底是什么东西?好,非常简单,一看这个就明白了,对吧?这是服务器端的啊,这服务器端我们不看,我们是看客户端的,拿到这个 socket 对象过后,我们通过 on 就可以监听事件,这事件的名字,这就是这就是 那边传给我的,就是一旦触发这个时间,就那边传了数据过来,那么就触发这个函数,就这么简单啊,就这么简单。比方说哈,我们这里看一下我们的聊天室接口,聊天室接口里面有很多事件啊,就是服务器那边负责触发,客户端那边需要监听。好,我们这里有四个时间,那么比方说这里 updates user 这个事件啊,这个名字叫这个,这个事件的触发时期什么时候触发呢?只要有新任新用户进入了聊天室,他就会推送这个事件,比方说你是张三,你在聊天室里边,这个时候呢,突然邓哥进来了,那么张三就会收到这么一个消息啊,有 老用户退,退出,突然突然那个成哥退出了直播间,那么你是张三,张三也会收到这个消息,还有什么时候呢?还有你自己进入进入这个聊天室的时候,你自己进来了过后也会导致这个用户列表更新,那么用户列表也会重新传给你,对吧?也会触发这个世界。 那么触发的事件的时候传递的是什么消息呢?传递的就是整个聊天室的用户数组啊,我这里每一个用户就是一个啊,就是这么一个东西啊,就是一个,呃,支付券。那比方说就这个事件吧,我来监听一下。 so kiss 啊 啊?如果说有些特殊的事件名字啊,比方说像这种事件名字,你看一下啊,他那一本成他有些制定他有些内置的事件。 connect 表示什么意思?表示已经连接了,对吧? l 表示有错误,对吧? disconnect 呢?表示连接被关闭了 啊,就这么一些事件,其他的我们就可以使用自定义事件,那么自定义事件,我看这个事件的名字叫做 update user, 好,来吧, update user, 当我们这个事件触发的时候,服务器就会给我一个数据,对吧?是服务器触发了一个事件,那么我们这边就会有一个回调函数,这个回调函数里边呢,我们就知道了啊。呃,事件 updates, user 触发了, 点上我们的连接地址,对吧?握手,地址,把地址复制进去啊,保存,现在再看是不是事件触触发了, 哎,那触发这个事件说明啥?说明服务器有推消息给我们,而且推的消息类型的就是这个类型,那服务器会给我们传什么数据?我在哪里获取呢?比方说服务器会给我们传一个用户列表,那我在哪里获取用户列表呢?就是这个是肥料函数的参数,对吧?我们把它打印出来,就这个是好保存 刷新,你看目前只有一个游客,游客四,那如果说我新开一个页面啊,你看一下是不是有两个用户了,对吧?游客四,游客五,那么这边呢?你看又出发了,我一个新的用户进来,这边的事情也出发了,然后我们再 下来开一个新用户啊,你会看到服务器都会向所有的客户团推送这个消息,那现在这边新用户进来了三个用户,那么这边呢?你看又推送了这个消息,三个用户,这边也是啊,消息又更新了, 就这么就这么个意思啊,这是这个事件,其他的事件呢?我们看一看吧,看一看就一样的方式啊,比方说这个事件就自己进入聊天室的时候, 这个因为我们这里呢就懒得去做什么登录了啊,就做一个简易的聊天室,所以说自己进入聊天室的时候呢,服务器会给你分配一个用户名称,就你叫什么名字啊,他就触发这个时间就给你传一个支付串。好,咱们来试一下这个时间吧, name 啊,那么这里是 name 时间,然后呢,服务器会给我们传一个名字啊,保存啊, 好,你看刷新啊,是不是进了个聊天室了,然后呢,游客时福气跟我们分配的名字是这个啊,就这么个意思啊,这就是那个,当然我也可以退出哈。 disconnect 表示断开连接,就是客户端这边可以主动断开连接,对吧?我们这里有个 sockets 对吧? sockets 呢,我们就可以 disconnects 方法断开连接。好,这一断开之后啊,你看这边全部收到消息了啊,不对,是悠着又出发了,对吧,少了一个用户了,你看这边都会都会知道少了一个用户了 啊,就是,这就是基本的逻辑啊。哈喽,关注读一剪辑号的同学啊,我是袁老师,插播一下,要想学正儿八经的前端知识呢,你就好好来看我的大师课。大师课虽然是免费的,没有价格,但它的价值 远远超过你以往看过的任何课程,无论是里面讲的任何内容。比方说什么 v 八原理啊,无忧原码呀,比面试题啊,还有常见的效果实现啊,任何一个你学会了,都可以离真正的高薪跨进一大步。你把这些内容学完了,不用我说,你自己都能感觉到什么,三四十万的年薪不是那么遥不可及。如果说你天天看袁老师短视频都觉得有帮助的话, 那么大师课对你的帮助可以说把我的短视频加起来乘一个十。你开玩笑啊,那是体系知识,不是短视频能比的啊。所以呢,还没有领到的同学啊,抓紧时间可以进咱们评论区第一条,然后呢加入我们的粉丝群,根据提示领取就完事了。

为什么阿里禁止工程师直接使用日制系统中的 api 呢?应用中不可以直接使用 logo、 foji、 logobag 等日制系统的 api, 而是应该依赖像赛尔炮街这种日制框架的 api, 这是阿里推出的扎尔开发手册当中的一条规约,很多人呢不知道为什么,其实呢,这也是门面模式的一种体现, 我们工作当中常用的 logopojiblog 等日制框架呢,他们都有自己单独的 api, 如果要在应用中直接依赖具体某个框架的 api 的话,就会大大增加应用程序的代码对于日制框架的偶和性,那怎么减少这种偶和性呢?有一个好的办法就是在日制框架和应用之间呢,搭设一个沟通的桥梁, 只要这个桥梁设计的足够好呢,随意更换另外的日制框架,应用程序都不需要修改任意一行代码。所以呢,日制的门面服务就是这个桥梁,它可以帮助我们屏蔽掉底层日制框架的具体实线。这样做最大的好处呢,就是右层的开发不需要关心底层日制框架的实线以及细节,在编码的时候呢,也不需要考虑日后更换框架所带来的成本。

哎,公司开放了拆 gpt 的 api 接口,现在的价格是一美元六十二万字。第一个问题啊,开放这个 api 接口是什么意思? 技术层面就是其他的网站、 app 程序都可以调用拆 gpt 的服务,比如小程序,比如网站,你可以开发一个界面后台直接对接拆 gpt, 你的功能就跟他完全一样了。 那么欧盆 ai 开放拆 gbt 模型的 api 接口到底有什么作用?对于我们普通人有什么影响? 我来举几个例子。第一个,比如说很多 app 也好,网站也好,他们的在线客服功能,原先除了人工服务以外,也是有专门提供这种问答机器人服务的。开放接口之后就可以直接用拆 gpt 了,那些公司就必须得转型。但是对于用户而言,客服更智能了,对话的时候驴 唇不对马嘴的情况就很少了,再预设一些答案,用户体验会更好。再比如开车的时候用的地图软件导航去某某地方,现在主要用的是文字输入,如果用语音,他只能理解某几个关键词, 如果导航软件接入到 chat gbt, 那么你就可以直接用语音去跟 a p p 对话了,它就能理解你的意图。 另外最关键的就是接入到我们的搜索引擎之后,搜索引擎在回答你的问题的时候,就不只是甩给你一堆网页了, 同时他还会告诉你答案,体验会更好。但是咱们这几家搜索引擎公司就面临一个尴尬的局面,你到底接不接这个叉 gpt? 如果你不接好,别人接了谁对接了谁的用户体验就是质的提, 你不对接,马上就是用户流失,那么也就只能选择对接。但问题的关键就在于啊,你一旦接了,你的竞价排名系统就会遭受打击。 大家可能有所不知,比如像医美这种行业,他投放一个关键词,比如说割双眼皮,比如隆鼻,如果你点击一次,他就要支付二十块钱甚至更高的价格,一个月推广费大几百万的企业比比皆是。 当然了,拆 gpt 没有办法给你开刀,但是那些可以被拆 gpt 取代的行业呢?他的广告还有那么大的价值吗?最后我想说的一点,我觉得才是最关键的,就是商业格局, 人家知道你们都想自己研究,三六零老板周宏一建议打造中国版 chit, gpt 不是已经上热搜了吗?好了,现在你不用研究了, 我直接开放,你到底还要不要研究?如果继续研究,就得花一年、两年甚至是好几年,还得搭进去几亿甚至几十亿的成本, 你出来的东西还不一定好用,等你好用了,他那边在大量问答数据的训练之下,都已经超神了,如果你不研究,你就得继续给我付费,贵吗?不贵,架不住量大,架不住时间长了。也就在昨天,我接到一个招聘网站邀请重新回归的一个电话 啊,说我们这已经可以无限制聊天了啊,您的企业可以呃入住体验。哎呀你大爷的,真的很悲哀,短视频平台搞企业号入住的时候不早就应该这么做了吗?进去之后还得只能看一份简历,三份简历之后就得交两千八百八,五千八百八还能讨价还价, 而且发职位还有限制,你的战场都被别人给打没了,你还只顾着收钱,其实是挺悲哀的一件事,技术上稍微有一点点的领先,就恨不能把牛都吹上天,恨不得把钱收到死。 真的希望咱们的土地上能长出像 spacexx、 neurolink、 open ai 这样的公司,大家都加油吧!

对于做原料而言的话,就是说我们今天总结一下就是三种主要的一个玩法。第一种就是技术的一个垄断,比如说我们搞出一个新的一个经行, 或者新的一个合成路线,成本降低很多。新的经行的话,呃,可以在全球想办法去做手法,比如这个配套制剂去做,另外成本降低的话,我这个产品的话有生命力,这样子的话通过硬的一个技术性来去解决这样一个问题。 呃,第二种打法就是我们相应的往自己去延伸,把这个价值链去延长。这里面我们看到像斯黛丽、像博瑞, 还有我们看到很多的这个相关的这个原料企业都在做的,就是往自己的一个一体化的去延伸。因为做原料而言,做个几千万就算 是一个不错的一个收入了几个亿基本上很少,但对于做自己而言,做一个亿甚至十个亿都是属于好多的,所以这样子的价值的一个延伸和延长。当然这里面的话也可以就是 采取的方式。什么呢?如果跟制剂的这块在早期一块联合去申报,然后相应自己只做原料,跟别人做一个利润的一个分配, 这个现在也是一个普遍的一个现象吧。第三种打法也是我们今年中年要讲的,就是实际上就是现在目前看到的就是大家几家,可能就是三五家这块国内有文化的大家联合起来一块就是把价格提升一下。 呃,我们现在就是不鼓励类似的,但是也要说明的是什么呢?如果是合理的利润原原来要这块还是要争取的,不是不鼓励这种一下子翻给 几十倍上百倍的一个价格,这样子把制剂这块就没有利润的去做。当然这里面也有这种专门就是把这个原料药加制剂这一块一体化的去 呃连串联起来,这样在字迹上,比如说原来是呃几分钱、几毛钱的,一下子抬个十几二十倍 这个来说,这样去做也是比较多。我们那这个这个打法的话,在零八年以后的话,像山东这一块,然后湖北这边做的很多,湖北你像九州通,呃,然后另外湖南的尔康这些的话做的很多,还有很多 主要是一些医药的一个销售公司在做的比较多,因为他们对这里面的一些玩法的话就比较熟,因为为什么他们相对来说先知先觉呢?因为原来大家在做药品销售的时候,原来有一些品种这个价格很低的,一下把价格招标时候把 价格抬起来,这样子的话就是一下这个品种就活了,所以他们比较适应。所以在大家对大家来说的话, 我们现在选址选哪一种,自己根据企业的一个自身的一个情况,但是总体上来说还是要靠技术驱动。现在的话都是关联申报吗?原来要自己 一个关联申报,在这样一个情况下,一个产品的生命周期没有像原来那么的一个长了,所以还是要把自己的一个自身的底子打好。

api application programming interface 开放平台是指公司或组织将自己的服务和数据开放给第三方开发者使用的平台,其商业模式主要包括免费和付费两种。本视频将从商业模式的角度探讨 api 开放平台的运作原理、优缺点以及发展趋势。 api 开放平台的主要运作原理是将公司或组织的服务和数据通过 api 接口开放给第三方开发者使用。开发者通过 api 接口调用平台上的服务和数据, 从而开发出自己的应用程序或服务。在商业模式方面, api 开放平台主要包括免费和付费两种。免费的 api 开放平台通常是为了吸引更多的开发者来使用和开发应用程序,以增加平台的用户量和曝光度。 同时,免费的 api 开放平台也可以通过数据收集、广告投放等方式获得收益。在这种模式下,开发者可以免费使用平台上的服务和数据,但通常需要遵守一定的使用规则和限制。 付费的 api 开放平台通常是为了回收平台的开发和维护成本,以及获得更高的商业价值。 在这种模式下,平台通常会对开发者收取一定的费用,同时也会提供更多的服务和工具, 如技术支持、数据分析等。付费的 a p i 开放平台对于一些商业应用程序的开发者来说可能更有吸引力,因为他们需要更高质量的服务和数据支持。不同的 a p i 开放平台模式各有优缺点。免费的 a p i 开放平台可以快速 拓展用户群,增加曝光度,同时也对开发者更加友好。但是这种模式下可能会存在数据滥用、监管困难等问题。付费的 api 开放平台可以保证更高质量的服务和数据支持,同时还可以获得稳定的收入来源。 但是这种模式下可能会限制了开发者的创新和探索,限制了平台的发展。未来 api 开放平台将面临更多的挑战和机遇。 一方面,随着人工智能和云计算等技术的不断发展, api 开放平台的服务和数据将会更加智能化和云化,能够更好的满足开发者和用户的需求。 另一方面, api 开放平台也需要应对各种安全和隐私问题,如数据滥用、数据泄露等问题, 保障用户和开发者的利益。综上所述, api 开放平台的商业模式主要包括免费和付费两种不同的模式各有优缺点。未来 api 开放平台需要更好的应对各种问题和挑战,保障用户和开发者的利益, 实现更好的商业发展。如果有任何疑问,可以随时评论留言或私信我,欢迎关注我,点击关注,共同探讨!


hello, 欢迎来到 api fox。 api fox 是一个 api 协作开发平台,后端前端测试都可以使用 api fox 来提高工作效率。对于后端开发来说, api fox 的核心功能包含以下几个模块,调用 api、 定义 api、 调试 api 以及生成 api 文档。 打开 a p i fox 呢,首先你就会看到这个界面,如果你要调用 a p i 呢,你可以点击快捷请求, 然后呢就把你的 url 这些 body head 之类的填好,点击发送。这个其实就跟 osman 是一样的, apf fox 也支持各种协议,你可以点击这个大加号就会看到可以新建一个 web socket 接口,也可以新建一个 socket 服务。那在 body 里面呢,你还可以看到我们也支持像 graph q l 或者是 message pack 这样的协议。如果你使用的是 rpc 架构呢,你就需要切到首页,然后去新建一个项目,在这里呢,你就可以选择 grpc 或者是 double 协议来方便的去调试对应的接口。 如果你手里已经有了一个完整的 api 项目,那你就可以去项目设置导入数据,无论是 swagger, postman 等等的几十种的不同格式,都可以很方便的导入到 api fox 里面去直接开始调用。当我们使用 postman 的时候,到这里其实就结束了,而对于 api fox 来说,这里才刚刚开始, 对于很多后端开发来说,写 a p i 文档是一件很麻烦的事情,而 a p i fox 给了你一个最方便的写 a p i 文档的方法,我们刚才已经跑通的这个接口,我只需要点击保存为接口 保存 ok, 你就看到它就已经生成了一个 a p i 文档,这个文档呢,它里面的响应就是根据刚才的实际 返回的响应视力,就是刚才这个实际返回的这一套的数据。对,最简单的办法就可以生成一个 a p i 文档。如果你用的是 javaspreen 框架或者 cutline, 那我还要向你隆重介绍 a p i fox helper, 这是一个 i d e a 插件,只要安装了这个插件,就可以一键生成整个项目的 a p i 文档,都不需要写那些 swagger 的注解。 当然,如果你们团队用的就是 swagger, 也可以使用 a p f fox 的导入功能,定时导入,只要把你们的 swagger 的 url 粘到这里,对,然后 点击保存,立即导入,那就可以实时的把你的 swagger 的文档同步到 a p f fox, 继续使用 a p f fox 的调试和文档 mock 等等功能。 不过 api fox 最推崇的方式还是文档先行的理念,先定义好了 api, 然后再进入开发,这样的好处是可以让前端和后端同步进入开发,整个团队的效率就 大幅提升了。在 api fox 里点击新建接口,就可以开始定义 api, 而这里写一个 pat id, 对,你可以看到 pass 参数会自动识别到这里来。那其他像这些基础信息啊,名称啊这些比较简单,直接填就可以了。 那这里比较特别的部分呢,是返回响应的地方,因为这部分的 api 文档呢,通常写起来是最复杂的,我们一般呢会有一些常用的数据结构,我们会推荐把它定义成数据模型,比如这个 api response, 包含 code, message 和 data。 那我们在这个接口里面呢,我们就可以去引用一个数据模型,像这个 api response, 然后呢这个 data 每个接口会不一样,我还可以解除关联,然后我再去用一个 pet ok, 那这样的话,你就可以看到一个整个的数据结构就已经非常方便的定义出来了。到了返回视力,本来我们要写视力是很繁琐的,但在 a p fox 里面呢,我们就可以使用魔法了,我添加视力,然后点自动生成 ok, 这个响应视力 q 的一下就出来了,会根据你的数据结构定义和自断的命名,自动去填充四段内容。比如你可以看到 url, 就会出来一系列的 url, 然后 status 就会根据你的美举值出来一些 status。 我们选一个成功势力确定 ok, 这样一个响应势力就已经完成了 apfox 的功能。还不止如此,我们可以点一下这个,通过 jason 导入,我把一个完整的 jason 粘起来确定,你就看到自动就根据这个 jason 的内容识别出了一个数据结构, 也是非常方便的,可以生成一个响应的结构,而且它不止支持 jason, 还支持叉 m l, 甚至是 mysique 的键表语句等等,都可以非常方便的导入进来。不同的接口的成功二百呢,一般是不一样的,但是呢,像四百四零一四零四这些错 错误的响应呢,其实每个接口可能都一样,这个时候我们就可以使用 a p fox 的组件库功能,把这些常用的响应呢保存为响应组件。然后呢,我就可以在单个的接口里面去引用这些响应组件,这就是一个最方便的去使用这些重复的响应的方法。 总而言之, a p i fox 提供了非常强大的 a p i 定义方式,让你可以用最简单方便的方式定义好你的 a p i。 定义好了 a p i 之后,只要你把前端开发也拉进同一个项目,那么在你的接口开发出来之前,前端就可以使用 mark 数据来直接进行开发了。详细的在前端开发如何使用 a p i fox 那个视频里面会讲, 同时我们后端也进入了开发环节,这个时候就可以使用 api fox 的自动生成代码功能,根据你的 api 定义自动生成代码,切到 api 的文档 tab, 然后这里有个生成代码,生成接口请求代码呢,这个是调 用这个接口的时候用的,而后端开发接口的时候呢,就用生成业务代码 a p f fox 支持生成像 java p, h p 等等的各种各样的常用几十种不同语言的业务代码,每种语言呢还会支持很多种不同的框架,你还可以在这里去配置你的代码的风格。 生成的这个代码呢,会包含像路由处理啊,请求验证啊,响应处理等等的基础功能,就可以作为 api 服务的基础框架,你只需要在里面去补充业务的逻辑就可以了。 代码写好了之后呢,就进入自测环节,在已经定义好的接口呢,切换到运行,我们就可以去一键调试了,写好参数值就可以直接去调试它。 如果你的接口 body 呢是一个 jason, 对,那可能拼起来比较复杂,这个时候我们就又可以使用魔法了,你可以点自动生成,哎,这个接口的请求的数据一组直接就出来了,这里我要特别介绍一下这个动态直攻。 动态值是什么呢?其实就是一系列各种各样的动态变量,你想要什么样的值,我就可以自动的去生成一些什么样的值,比如我一个接口做出来,那可能呢,我需要使用很多组参数去跑一下,自测一下,每次自测我都要编一组数据,这其实就很麻烦。这个时候呢,我们就可以用到这个动态值, 这个 id, 它是一个数字,那我就可以在这里动态值,然后选一个 integer 数字,然后我去选一个十到一百之间的一个数字,确定好, 可以看到这个 id 就变成了这样一个冒克的一个数字,那我点击发送的时候,他的实际的实际请求就会变成了一个 id, 他事实上发送的就是一个八十,每次发送呢他都会不一样,这就是一个动态值。而且动态值呢还支持像 m、 d 五或者长度或者子字符串等等的一系列贝斯六四之类的这种 字符串函数都是可以非常方便的使用的。好,这是发送请求的环节,接下来我们应该看返回响应了,在写好了接口之后,最重要的就是要看看我接口返回的数据是不是我想要的。比如这个接口,我点一下发送 好,你会看到右边有一个红色的叉叉,写着返回数据结构与接口定义不一致,是什么意思呢?因为我们不是已经预先定义的这个 api 的返回数据结构吗?那我事实上后端服务器返回的这个数据,我就会有一个自动的教验,那教验就是看他跟接口文档是不是一致的? 那我们看他会提示说 dollar 点 name 应该是 string 类型,这个 name 是让我返回了一个 integer 类型,所以就不一致了。那其次呢, dollar 点 status 应该是预设定的美举值之一,美举了 available, pending 和 soda, 而这边实际上返回的 status 是个 no, 所以这个是不符合计 文档的,所以只要是跟接口文档不一致的,都会自动去报错。那这种小问题呢?其实都不需要流转到测试这里去,直接在后端自测这一环就解决了,直接就会提升后端代码产出的质量。 在 postman 里面,你要去写字册,那其实都需要去通过在后置操作里写脚本才能实现。而在 api fox 里面呢,大部分的后置操作都可以使用可视化的方式来设置出来,不需要写脚本。 首先呢, a p f fox 是直接支持使用 postman 脚本的,你可以在这个自定义脚本这里直接就使用 postman 的语法 pm, 你也可以在公共脚本这里引用你已经写好的这样一些脚本。 其次呢, a p fox 还提供了一个可视化的断言功能,对,你只要去把这几个数据线给填好,它就可以非常方便的生成一个断言。那这里也可以去使用提取变量,把前一个接口得到的 response 提取, 取成环境变量。最厉害的是什么呢? a p f fox 还支持数据库操作,我们可以在这里选择一个数据库连接。数据库连接是什么呢?我们其实就可以去连接到像 mexico, seque server 或者 oracle 之类的这些常用的所有的数据库,那 把这些地址,用户名等等的填好之后,你就可以在前置后置操作里面连接这些数据库,然后写一个 cq, 把你查到的东西提取到变量里面,然后就可以在后续的操作里面作为断言使用也可以或者是作为接口的请求的参数都是 ok 的。已经维护好的这个接口请求呢,我们就可以点击保存为用力, 保存好了之后呢,他就会出现在这个接口的下面,那每一个接口呢,我们都可以去把每种情况的请求数据保存为一个用力,这就非常方便我们的自测。最后这里呢还有一个跟 post 弹不一样的地方需要介绍一下,比如我的一个 a p p 呢,有可能要访问多个不同的服, 他们的 uil 前缀呢?各自不同,我怎么让每个接口去访问不同的服务呢?那首先我可以进入环境管理,在这里呢我就维护了一个订单服务和一个用户服务,那他们有各自不同的前缀 uil, 而且呢我的每一个环境里都会有这个对应的服务,这个是正式环境, 这个是测试环境。这样定义好了之后呢,我就可以在每一个接口里面我去选择他是要访问哪个服务的,这样子呢,无论你看我现在是在测试环境,他就是 test 的这个 url, 那我切到正式环境,他就是这个正式的 url, 这样的话其实就可以非常方便的去切换服务, 那我也可以把这个服务定义在我的目录集,我可以设置一个目录集的前置 url, 这样就可以非常方便的我们去调试它。刚才讲的这些呢,还是以文档先行的思路来讲的,首先定义好了接口,然后再进行开发,而有些项目呢,可能规模比较小,其实不需要专门先写文档,这个 之后呢,你就可以使用 apfox 的调试模式,点击界面的左下角呢,就可以切换到调试模式。在调试模式里,你就不需要先写好接口文档再自测,而是可以直接去发送你的请求,也可以随时去修改你的请求参数,就适合这种边开发边修改接口的 code first 的这样一种开发方式。 那当你自测完了之后呢,也会根据你的接口的返回来,自动生成一个最终的接口文档。 ok 到这里呢,一个接口就差不多开发完了, 然后你就可以把你的测试拉进这个项目,它就可以根据你定义好的接口直接开始测试,它也可以直接引用你已经定义好的接口用力。具体呢,在测试如何使用 a p f fox 这个视频里面会有奖, 测试也完成了之后,我们的整个 a p i 开发就完成了,这个时候呢,还可以使用 a p i fox 的生成文档功能,生成一个 a p i 文档,点击在线分享,我们可以 新建一个分享,起一个名字,然后选一下环境,还可以选到底是全部接口还是部分接口,也可以去给他设密码,设语言等等。好,我们保存 就会得到一个链接,打开这个地址呢,我们就可以看到一个完善的接口文档,每一个接口都会有请求参数,返回响应等等。 那不但如此呢,我们还可以在这个页面上直接点击调试,你就会看到一个嵌入到网页里面的一个像 postman 一样的界面,可以直接一键发送调试这个接口,而且呢它还支持实力代码,我可以直接去生成一个请求这个接口的代码, 以及我们也可以再生成数据结构的代码,点击这个生成代码,那我们就可以得到这个数据结构对应的一个数据模型代码,非常方便我们去调用它。我们的这个 api 文档呢,还会支持像导航栏,自定义以及自定义域名,还有像 seo 设置等等的一系列的 这种配置,你也可以把它投稿到 api fox 的 api hub, 就可以开放给所有的用户。 ok, 以上就是后端开发如何使用 api fox 的整个过程,更详细的呢?你可以在 api fox 的帮助文档里看到,希望你在 api fox 玩的开心。

一创视频什么是 api 呢?这是每个人都在问的问题。呃,好吧,也许没有每个人。不过教科书上 api 是这样被解释的。 api 又称应用程序接口,就是软件系统不同组成部分衔接的约定。 由于近年来软件的规模日益庞大,常常需要把复杂的系统划分为小的组成部分。编程接口的设计十分重要。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分啊。说了这么多,是不是一个字都没听懂? 莫急,且听我慢慢道来。 api 其实是接受你的指令传输给电脑,再将电脑的反馈传递给你的一个信使。这么说吧,你可以把 api 想象成是 餐馆服务生菜单上有你想吃的牛排,而厨房就是那个杀牛的备菜部门。但是这里面缺失一个环节是把你的点单指令传递给厨房,再从厨房端菜到你桌上的一个服务生。 所以服务生接受你的指令,再把你的指令传递给厨房,最后再从厨房把牛排端到你桌上,这就是 api 的作用。

一说到代理啊,大家可能都会联想到 gdk, processe 以及 cgibeaop 等等等等,其实准确来说呢,这些都算是动态代理。另外呢,我花了一个多星期,把往期的面试题解析配套文档啊都准备好了, 获取的小伙伴可以在我的主页捷径中找到。那为什么说我们说需要动态代理呢?在回答这个问题之前啊,我先跟大家讲清楚什么是静态代理。 那今天代理呢,是代理模式的一种实现形态。代理模式呢,他的官方原文是这样的,他大致意思是为其他对象提供一个代理项或者是占位服,以控制对这个对象的访问。 什么意思呢?那代理模式最核心的思想是创建一个代理对象,作为在客户端和目标对象之间的一个中介,他的主要作用呢是保护目标对象以及增强目标对象。那什么是静态代理呢?就相当于是这个代理对象 我们需要手动来创建,而且呢,一个代理对象只能服务于一种业务类型的对象,那么当我们有 n 个业务目标对象的时候,就需要 n 个近代代理对象,这样的话就不利于我们业务的扩展。举一个例子,有一个程序员张三,他平时呢加班比较多,加上公司的异性同事又比较少, 然后呢,又不善于和身边的人沟通,那自己呢,又缺少人脉和资源,所以呢,一直没有找对象。那这个时候呢,张三的父亲张老三就比较着急了, 他就利用自己的人脉,然后经常呢给张三安排相亲,那张老三呢,就是张三的代理的相亲对象。那么问题来了,一般情况下,张老三是不会给李四去安排相亲的,因为张老三是不会关心李四有没有对象这个事情, 李四有没有对象,只有李老四才会关心。那么这个时候呢,就出现一个新的职业,叫做媒婆,媒婆呢就会关心张三呀,李 四啊,五啊五啊,赵六这些有没有对象,那么媒婆就成了所有相亲需求的代理对象,那么这样一个代理对象就可以服务于所有相关的业务对象,这相当于是动态代理对象。那为什么需要动态代理呢?我总结有以下两个原因, 第一个呢,就是减少代理对象的个数,从而去降低程序的复杂度。第二个呢,是易于复杂业务的动态扩展。 那在加法中啊,动态代理的实现原理是怎样的呢?我们以 jdk plug 为例, gdp plug 的原理啊,我归纳为以下五个步骤, 第一步呢,就是要去拿到目标对象的引用,并且呢通过反射去获取目标对象所有的借口。第二步呢,就是要重新去生成一个新的代理类,然后实现目标类所有的借口方法。第三步呢,就是把增强的逻辑代码呀,加入到新生成的代理类的 元旦码中。第四步呢,就是动态去编意代理代的元旦码,并且呢生成自建码,也就是卡拉斯文件,当然这个步骤呢,是在内存中完成的。第五步呢,就是去加载并执行新生成的代理对象。 目前呢,主流的动态代理的 api 啊,它有两种,分别是 gdk, proxy 以及 cg 那一波,那 cg 那一波的实现原因呢,我在这里就不详细追溯了,如果想详细了解的小伙伴可以在评论区回复六六六,我可以单独在拍摄一期视频进行详细介绍。 那最后我给大家介绍一下 cg 耐宝和 gdk pro 水的一个区别。关于 gdk pro 水和 cg 耐宝的区别呢,我归纳为以下三点, 第一点呢,就是 gda plus 是实现目标对象的借口,而 cgneiber 呢,是继承目标对象。第二点呢, gdp plusc 和 cgniber 都是在运行期生成的自检码啊。第三 三点呢,是 gda plus 是通过反射来调用目标方法, sunel 呢,是通过法斯克拉斯机制来调用。好了,以上就是我对动态代理的理解,你会了吗?我是被变成耽误的文艺汤。如果我的分享对你有帮助,请你动动手指,一键三连分享给更多的人!关注我,面试不再难!

api 设计是好的设计,相信你弄明白了这一点,这将帮助你更好的进行 api 接口的设计。我觉得好的 api 设计啊,需要同时考虑到这几个要素,标准化、兼容性、抽象性、简单性和高性能。可以说啊,这几个要素缺一不可。 对于外部 api 标准化而言,一个非常好的案例就是 rastofapi, 目前业界的 openapi 多数是基于 rascoapi 规范设计的。 需要注意的是啊, risffapi 它具有成熟度的模型,其中 level 零是普通的请求响应模式。 level 一引入了资源的概念,各个资源可以单独创建 uri 与 level 零相比,它通过资源分而制之的方法来处理复杂问题。 拉瓦奥引入了一套标准的 http 协议,他通过遵守 http 协议定义的动词,并配合 http 响应状态码 来规范化外表 app 的标准。 l 三中使用超媒体可以使协议拥有自我描述的能力。 通常情况下,成熟度模型中达到 low 二就已经非常好了。在 ratsuapi 中,每一个 ui 代表着一种资源,这里 ui 是每一个资源地址的唯一资源定位符。所谓资源啊,实际上就是一种信息实体, 它可以使服务器上的一段文本,一个文件、一张图片、一首歌曲或者是一种服务。 rest of a a p i 呢,规定了通过 get, post, put, touch, delete 等方式对服务端的资源进行操作。 因此啊,我们在定义一个外部 api 的时候,需要明确定义出他的请求方式、版本、资源名称和资源 id。 举个例子来说啊,要查看用户编码是幺零零幺的用户信息,我可以定义 get 的请求方式,而他的版本是 第一,资源名称是 usus, 资源 id 是幺零零幺。这里可以思考一下,如果存在多个资源组合的情况呢?事实上,还可以引入此资源的概念,需要明确定义出他的请求方式、版本、资源名称与资源 id, 以及此资源名称与此资源 id。 举个例子,要查看用户编码是幺零零幺的用户的全新信息,我可以定义 get 的请求方式,而他的版本是唯一,主资源名称是 uzars, 主资源 id 是幺零零,幺子资源名称是 ross, 子资源 id 是幺零幺。 有时候啊,当一个资源变化难以使用标准的 resfapi 来命名时,就可以考虑使用一些特殊的 x 命名。比如啊,密码修改接口,我可以定义铺子的启动方式,而他的版本是 v 一,主资源名称是 ussas, 主资源 id 是要 二零零幺,自然自断是他是我的。然后定义一个 x 操作是莫里反。与此同时,啊,建议不要试图创建自己的错误码和返回错误机制。很多时候呢,我们觉得提供更多的自定义的错误码有助于传递信息。但其实啊,如果只是传递信息的话,错误信息自断可以达到同样的效果。 此外,对于客户端来说,很难关注到那么多错误的细节。这时候,啊,这样的设计只会让 api 的处理变得更加复杂,难于理解。 因此呢,我的建议是,遵守约死否 api 的规范,使用 http 规范的错误码。例如啊,我们用二零零表示了请求,成功用四零零表示了错误的请求,而五零零则表示服务器内部的错误。 因此啊,当 risefa api 接口出现非二零零的 http 错误码响应时,可以采用全局的异常结构响应信息。接下来我们来讨论一下 响应的异常结构响应信息中每个字段的含义,这里出于业务差异性的考虑,我就不一一来讲。这里列出了最后常用的几个字段,讲一下他们各自表示的含义。其中扣的字段用来表示某类错误的错误吗? 例如前面介绍的无效请求、缺少参数、未授权资源未找到资源已存在等错误。而 max 一次段用来表示错误的栽要信息,他的作用是让开发人员啊,能快速识别错误。 什么探一次段,我们用来记录发送错误时的服务器时间,他可以明确的告诉开发人员发生错误时的具体时间,便于在日制系统中,可以根据时间范围搜索来快速定位错误信息。 当然,出去之外呢,响应的内容会根据不同的情况做出有不同的响应。如果是单条数据,则返回一个对象的接近字幅串。如果是列表数据呢,则 和返回一个封装的结构体,其中涵盖 com 的字段和埃特所的字段。 com 的字段表示返回数据的总数据量。需要注意的是啊,如果接口没有分页的需求,尽量不要返回这个 con 的字段, 因为查询总数据量是好性能的操作。此外啊,埃特此次段表示返回数据列表,他是一个节省这么串的数组。

那客户端是怎么实现的?你看一下客户端,首先创建了这个客户端的骚品的对象,然后也是启动一个客户端自己的现成,那这个现成的作用就是单独的去监听服务器过来的数据,单独的去监听, 然后完毕呢?客户端还支持同步,可以在键盘录入数据,让我们录入的数据在通过这个输出流告知服务端,往服务端写数据。那这个客户端的 现场看看怎么去监听服务器过来的数据?他首先把这个客户端转过来, 通过他的输入流对象不断的循环去监听服务端发过来的数据,如果得到就用 stree 来输出,他这个就是可以实现多线城的非主色的聊天室的 tok 的模型。

嗨,大家好,我是师哥。我们时常会听到别人在讨论 api 这个概念, 其实日常生活中我们有很多类似 api 的场景,比如电脑需要调用手机里面的信息, 这时候你会拿起一根数据线,将电脑与手机连接起来。电脑和手机上连接数据线的接口就是传说中的 api 接口。 但比喻到底是比喻,并非本质。要想真正了解 api, 还得老老实实去理解 api 的概念和真实应用场景。下面我们就先来看 一下什么是 api。 百度百科是这样介绍的, api 英文全称 application programming interface, 翻译为应用程序变成接口。 他是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组历程的能力, 而又无需访问圆码或理解内部工作机制的细节。大家看的是不是有点头晕?没关系,师哥讲一个小故事来帮助大家理解。我们有两个研发人员 a 和 b。 研发人员 a 开发了软件 a 一,研发人员 b 正在研发软件 b 一。有一天,研发人员 b 想要使用一下软件 a 一的部分功能, 但是他又不想查看软件 ae 的代码实现过程,怎么办呢? 研发人员 a 想了一个好主意,我可以把软件 a 一里你需要的功能写成一个代码块,并取一个名字叫做 w。 当软件 b 一中要用到这个功能时,就把代码快的名字 w 按照预定流程放在软件 b 一中,就能直接用我的功能了。 其中 api 就是研发人员 a 说的那个代码块。 那么 api 在现实社会中是如何使用的呢?举一个真正的 api 例子, 大家都熟悉在网上搜索航班信息的过程。假设我们国家只有一个航空公司 a, 大家可以直接登录航空公司 a 的网站,选择出发城市和目的城市、出发时间以及仓位等级等等。然后网站会自动访问航空公司数据库, 查到该天是否有空位。但当我们有多家航空公司 a、 b、 c、 d、 e 时, 我们就不能一个个登录每家公司的网站进行查询,而是可以使用一个拥有不同航空公司信息的集成方来进行选择。比如某 app, 这个集成方之所以能够获取不同公司的机票信息,就是因为这些公司的系统向集成方开放了 api, 使得集成方能够对这些公司的数据进行查询、订票、改签等操作。 可以说, api 就是集成方与不同航空公司的连接枢纽。 现在我们早已习惯动动手指就连接世界,从计算机到手机,我们可以在任何地方、任何时间进行聊天、购物、订餐、游戏等活动。 这一切的背后都是因为有 api 这个东西。所以以后再遇到 api 时,你就把它想象成服务员, 主要是奔波于应用与设备之间来传递数据,创造出让世界触手可及的连接。 好了,今天的内容就讲到这里,感谢观看喜欢小事编程课堂的小伙伴一定要记得点赞分享加关注哦,因为你们的支持是我们研发团队最大的动力!

api 稳当解析知识点好了啊,那么第二节课呢,我们来讲一下啊,这个接口 api 文档的一个解析啊,我们来复习一遍啊。嗯,我们要首先我们要了解什么是 api 文档啊? api 文档呢,它就是接口文档,对吧?它是一个描述接口信息的文档啊, 那么为什么我们要写这个 api 文档呢?他有哪些用处呢?首先第一个他能够方便前端开发和后端开发高效的合作啊, 就是后行开发,我不需要我作为一个前端网页啊,前端开发其实说白了就是网页,对吧?后端开发就是整个的一个逻辑和代码,对吧?它的一个计算啊,也是加减乘除的计算,对吧?查询加减连续增长改查,对吧?计算。那这些我不知道,我不需要 知道他内部是怎么实现的,我只需要知道他给到我这么一个方法,我只我只,我只需要调用他,我只需要输入,知道输入和输出是什么就行了,对不对?就方便我们之间快速的去对接合作就行了。 第二点的话呢,就是啊,我们项目迭代或者人员迭代时,当我们的一个啊,有新员工或者我们呢,我的老的旧的一个系统要对接新的系统的时候啊,我们我们就能通过,我不知道,我不需要知道这个内部的系统他是怎么实现的,我只需要呢知道他的收入和输出,对吧? 是什么就行了啊?他的地址是什么结果? ipl 文档, ipl 名称是什么,对吧?我只需要知道这些关键的信息就行了啊,他能够快速去熟悉项目啊,那么啊,他也能够方便我们测试提前介入和开展这个结果 工作啊,我们有了这个文档之后呢,我们不需要等到啊,所有的这个功能都开发完了才去测试,我们只需要,我们只,我们只有只需要有部分的一个接口已经写完了,后台逻辑已经代码就写完了,我们就开始进入测试,对吧?进入测试我们首先啊把这个接口 给他测试啊,能够通过,对吧?我们的后台保证他的后台的逻辑是正确的啊,这样的话呢,之后你再你再测前端的时候,你就知道大部分 你做过接口知识之后,那么后台基本上就是没什么问题,那么你在出现在在我们在系统接触阶段啊,后来发现发现了 bug, 我们就能马上确定啊,他原来肯定是在前端页面或者前端有问题,对吧?能够快速的去定位问题 啊,还有我们的这个文档啊,我们这个文档的话呢,他的编写是有开发部的编写啊,他的内容包括哪些呢?比如说他的基本信息啊,请求仓数访问数据啊,那么基本信息包括什么呢?我们接口名称,对吧?我们的接口地址啊,我们的请求方法 啊,我们这个啊,接口描述对吧?这些啊,这些的话啊,我们到时候要要写用力要用到,比如说我们的一个接口地址,对不对啊?接口地址这个我们的 ul 啊,到时候我们用,我们测试的时候我们需要去调应这个 ui 啊,对吧?我们请求方法,我们是用 pose 的 get 还是 delet, 对吧?正常改查对吧?我们接口的一个描述,他是用来干嘛的?这个接口到底用来干嘛的?是用来登录还是查询,对吧?然后的话呢?嗯, 我们那个请求参数是什么?我们输入和输,比如说我们请求头啊,那个头的内容啊,比如说 ctrl, 这是他的一个内容太普他的类型啊,然后的话呢?他请求体育是什么啊? 啊?前后题是什么?前后题的话,比如唱出名称啊,对吧?他说的类型啊,是不是要必填啊, 描述啊,视力啊,就是一个案例啊,用力他会举个例子啊,这个参数应该填成什么样子,对不对?场内的数据格式就是用节省啊,我们到时候要根据这个请流体的话去写,去写用力,比如说他是不是必填 我我为空,对吧?那如果他说四逼田,我为空行不行?异常情况,对吧?他如果说,呃,这个参数的话,他的类型啊,一定要是制服型的,对不对?我提一个,我提一个,整整数型还行不行,对吧?那这些都是一种情况,都是 我们根据这个他的一个参数,这个这个一条信息去进行设计的啊,设计用力的啊。那么最后我们来看一下他的一个返回数据,返回数据的话,一个是我们要需要了解他的一个响应状态码 啊,先说买好几种啊,比如说二以二开头的是二零一,他表示成功吗?对吧?你三开头的啊,从天下你四开头的,对吧?啊?是是是,有问题,服务器有问题,对吧?有五开头的对吧?啊?有五以五开头的表示服务器是有问题的,对不对 啊?你反正你要了解啊,了解这些状态码啊,表示什么意思,对不对啊?然后的话呢?我们除了了解这个状态码之后啊,我们还要知道这个响应的数据是什么啊?比如说我们如果说用 查询查询 get, 对吧?那 get 的方法的话,那你到时候,那么那么你通过这个借口的话,查询的话,他要反复一起数据的给给到我们,对不对?那么我们用 pose 是没有的,是吧? pose 是没有这个反复数据的 啊,那响应数据的话呢?包括我们的一个长寿名称,他是类型,是我必填还描述啊,那这些的话响应数据的话,我们要跟我们的预期值要一致,对不对?才表示这个接口返回数据是正确的,是,是通过的,对不对? 好,这个就是我们的一个接口 api 文档啊的解析啊,我们通过拿到这个接口文档,通过这么一个梳理啊,用用我们的这个,嗯,我们可以用插麦的把这些关键信息给他提取出来啊。啊,提取出来之后呢,后面就可以用到我们这个写,并且测试用力里面 啊,这个是我们用为我们写用力啊做铺垫的。
