如今的项目开拓中,接口是很普遍的运用技能。现在好多项目组都单独设有接口开拓职员。像腾讯、微博、淘宝等开放平台,其所谓的开放,便是供应一些可调用的接口,用于获取干系的信息。例如,微信用户基本信息、淘宝店铺、商品等,再根据这些信息,在运用里完成交互。虽然本章不会涉及太多PHP措辞本身的新技能点,但可以看作程序架构设计、业务逻辑和设计模式的运用。我们在定义接口时,常日有两种规范,一种是被其他内部项目调用的接口,另一种是对外的接口,紧张供应给外部开拓者调用。两种接口最大差异是,内部接口不须要太严格的身份验证,而对外接口须要严格的身份验证,加密、解密办法也各种各样。

23.1 运用程序编程接口(API)
对付运用开拓者来说,有了开放的API,就可以直接调用多家公司开拓好的功能来做自己的运用,不须要所有的事情都亲力亲为,节省精力。对付软件供应商来说,留出API,让别的运用程序来调用,形成生态,软件才能发挥最大的代价,才能更有生命力。同时,做好接口规范,通过设计权限来掌握安全,别人看不见代码,也保护了商业机密。
23.1.1 什么是接口
API(Application Programming Interface)便是接口,可以理解为一个通道,卖力一个程序和其他软件的沟通。实质上是预先定义的函数,如在项目中声明的一些功能函数,通过函数名称调用就可以获取函数运行后的返回值。由于主程序和这些函数在一起,本机调用没问题,而一部分函数须要让其他做事器中的程序调用,就须要设计成开放的API。接口的利用示意如图23-1所示。
在图23-1中,如果将数据增、删、改、查等功能做成开放的API,就可以在其他做事器的运用程序中,通过相应的规则访问接口,对数据进行操作,也可以在浏览器的页面中,直策应用Ajax访问接口,从页面中获取和操作数据。编写接口的程序员,只须要按接到的参数,去搭建底层架构和处理数据,以及按哀求的格式返回数据等。编写前端业务的程序员,也不须要关心数据是怎么来的,只要通过调用接口获取数据并用到自己的业务中,或将直接数据交给接口,让接口自己来处理即可。
当然设计出很好的API,也是不随意马虎的。要看重强调API安全,也包含打算和逻辑判断。假设物流中“货色”是数据,存放货色的“总仓库”是数据库,“店铺”是我们的网站或App。页面上显示的内容、数字,以及用户的操作要乞降结果都是须要一直搬运的“货色”,则卖力调配分配打包的中转站便是API,店铺事情职员直接从中转站取货就好。
图23-1 接口的利用示意
23.1.2 理解实现接口的几种方法
利用接口的目的便是远程实行、获取和传送数据。而实现这个目的可以利用Web Service、RPC和API等技能办法。Web Service属于架构里的Web做事,RPC属于Web Service的一种利用办法,在PHP中都有单独的扩展模块支持,有封装好的函数可以直策应用。API只是一种实现办法,先分别理解一下这些观点。
Ø RPC(Remote Procedure Call Protocol)
RPC采取HTTP协议,利用C/S办法的要求相应模型。客户端发起要求,做事器返回相应结果,类似于HTTP的事情办法。优点是跨措辞、跨平台,在C端、S端有更大的独立性,缺陷是不支持工具,不支持异步调用,无法在编译器中检讨缺点,只能在运行期间检讨。RPC会隐蔽底层的通信细节,不须要直接处理Socket通信或HTTP通信,在利用形式上像调用本地函数那样去调用远程的函数。
Ø Web Service
Web service是一个运行在Web上的做事,它通过网络为我们的程序供应做事方法,类似一个远程的做事供应者。Web Service 底层利用HTTP协议(实现远程数据交互的一个技能和协议),通过HTML进行通信。客户端不管是C/S还是B/S都能调用这个做事得到结果。这就实现了不同系统、不同平台、不同开拓措辞和开拓技能实现的软件系统之间的通信。如景象预报做事,对各地客户端供应景象预报,是一种要求应答的机制,是跨系统、跨平台的。
Ø API
API只是一种实现办法,在保留HTTP原生特色与语义的同时实现RPC,而且实现风格是千姿百态的。实质上,API与传统模式的Web Service都是实现RPC的,即远程做事。而传统的Web Service只是利用了HTTP通道,进行独立的交互,但是这个交互协议可以移植到其他协议下运作,而API天生与HTTP依赖无法移植。API可以更好地利用HTTP与生俱来的特色,如缓存、代理、安全、头信息扩展。反之,部分实现办法Web Service无法利用HTTP特色。WebService与API又都是在80端口下事情的,都可以绕开默认的网络防火墙限定。传统的Web Service哀求利用做事的平台对数据格式逼迫适应,做事真个交互数据处理变得更加快捷随意马虎,但增加了不同利用端对做事交互的困难度。
API比较Web Service更为轻量级,在优化好的情形下性能更有上风。推举在开拓中利用API的风格,可以自己规范与描述,处理不兼容问题。其余,API在业务实现上更为直不雅观,靠近MVC模式下开拓的运用,性能更好、更为灵巧,能够直策应用HTTP的动态网页技能开拓接口与功能。实在,API对付交互数据的格式没有明确规定,可以更好地在特定的软件运行平台利用,但是须要开拓者熟习各种格式的支持情形。