《细说PHP》第四版 样章 第23章 自定义PHP接口规范 1

如今的项目开发中,接口是很普遍的应用技术。现在好多项目组都单独设有接口开发人员。像腾讯、微博、淘宝等开放平台,其所谓的开放,就是提供一些可调用的接口,用于获取相关的信息。例如,微信用户基本信息、淘宝店铺、商品消息等,再根据这些信息,在应用里完成交互。虽然本章不会涉及太多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对于交互数据的格式没有明确规定,可以更好地在特定的软件运行平台使用,但是需要开发者熟悉各种格式的支持情况。

原文地址:https://www.cnblogs.com/itxdl/p/11444615.html

时间: 2024-08-02 01:10:55

《细说PHP》第四版 样章 第23章 自定义PHP接口规范 1的相关文章

Java编程思想第四版读书笔记——第十三章 字符串

Java编程思想第四版读书笔记--第十三章 字符串 字符串的操作是计算机程序设计中最常见的行为. 关键词: StringBuilder ,StringBuffer,toString(),format转换,正则表达式, 1.不可变String String对象时不可变的.每当把String对象作为方法的参数时,都会复制一份引用.(其实就是对函数中参数列表中参数的操作不会影响外面的原参数) 如下: import static net.mindview.util.Print.*; public cla

《细说PHP》 第四版 样章 第二章 PHP的应用与发展 5

2.5  如何学习PHP PHP以其简单易学的特点,以及敏捷开发的优势,从一个几乎不被人知的开源项目,慢慢成长为技术人员首选的动态Web设计工具,与其他语言相比,PHP表现得更好.更快.更简单易学.尽管如此,我们在面对一项自己不熟悉的新技术时,仍然会感到无所适从,不知道从何处入手,似乎总是感觉摸不出一条清晰的脉络来.另外,最大的障碍莫过于学习的过程枯燥乏味,从而失去学习兴趣.不过,如果你能掌握一种适合你的学习方法,就可以事半功倍.根据笔者多年的PHP教学经验,和众多人才培养的成功案例,列出的学习

《细说PHP》第四版 样章 第18章 数据库抽象层PDO 1

现在,如果你已经能熟练地使用MySQL客户端软件来操作数据库中的数据,就可以开始学习如何使用PHP来显示和修改数据库中的数据了.PHP提供了标准的函数来操作数据库.在PHP 5以上的版本中可以使用MySQL和MySQLi两套扩展函数,MySQLi是PHP 5中新增的,是对MySQL扩展的改进.但由于历史遗留问题,很多老项目是在PHP 4时使用MySQL扩展开发的,如果在原有的项目上进行二次开发,或者找一些学习的例子,都要求开发人员会使用MySQL扩展函数.如果是新设计的项目,则推荐使用MySQL

《细说PHP》第四版 样章 第18章 数据库抽象层PDO 4

18.4  创建PDO对象 使用PDO在与不同数据库管理系统之间交互时,PDO对象中的成员的方法是统一各种数据库的访问接口,所以在使用PDO与数据库交互之前,首先要创建一个PDO对象.在通过构造方法创建对象的同时,需要建立一个与数据库服务器的连接,并选择一个数据库.PDO的构造方法原型如下: __construct ( string dsn [, string username [, string password [,   array driver_options]]] )        //

《细说PHP》第四版 样章 第18章 数据库抽象层PDO 7

18.6  PDO对预处理语句的支持 在生成网页时,许多PHP脚本通常都会执行除参数外其他部分完全相同的查询语句.针对这种重复执行一个查询,但每次迭代使用不同参数的情况,PDO提供了一种名为预处理语句(Prepared Statement)的机制,如图18-6所示.它可以将整个SQL命令向数据库服务器发送一次,以后如果参数发生变化,数据库服务器只需对命令的结构做一次分析就够了,即编译一次,可以多次执行.它会在服务器上缓存查询的语句和执行过程,只在服务器和客户端之间传输有变化的列值,以此消除额外的

《细说PHP》第四版 样章 第18章 数据库抽象层PDO 12

18.9  管理表books实例 在Web项目中,几乎所有模块都要和数据表打交道,而对表的管理无非就是增.删.改.查等操作,所以熟练掌握对表进行管理的这些常见操作是十分有必的.本例为了能更好地展示PDO的应用,并没有将数据表的操作封装成一个数据库操作类,而是采用了过程化的编写方式,用最直接的方式实现. 18.9.1  需求分析 本例主要的目标是实现对图书信息表books的管理过程,包括添加图书.修改图书.删除图书.遍历图书列表.搜索图书等操作.创建数据表books的SQL语句如下所示. 创建后,

《细说PHP》第四版 样章 第23章 自定义PHP接口规范 3

23.2  接口实现的基础 大家都很了解函数在本地应用,通过名称调用函数执行,并通过传递不同参数,函数有不同执行,执行后给调用者返回结果.如果把一个函数做成一个接口远程访问,也需要这几个步骤.使用HTTP的GET或POST等,通过URL并附带参数请求接口,接口执行后将返回值传回远端的调用者.请求者可以是浏览器,可以是PHP或其他语言程序,也可以是页面中的Ajax等.当然,接口返回值的格式也是统一的,要让各种语言和设备的请求者可以操作,通常使用XML或JSON格式作为返回数据. 23.2.1  实

《细说PHP》第四版 样章 第18章 数据库抽象层PDO 2

18.2  PDO所支持的数据库 使用PHP可以处理各种数据库系统,包括MySQL.PostgreSQL.Oracle.MsSQL等.但访问不同的数据库系统时,其所使用的PHP扩展函数也是不同的.例如,使用PHP的MySQL或MySQLi扩展函数,只能访问MySQL数据库:如果需要处理Oracle数据库,就必须安装和重新学习PHP中处理Oracle的扩展函数库,每种数据库都有对应的扩展函数,如图18-3所示.应用每种数据库时都需要学习特定的函数库,这样是比较麻烦的,更重要的是这使得数据库间的移植

《细说PHP》第四版 样章 第18章 数据库抽象层PDO 8

18.6.4  执行准备好的查询 当准备好查询并绑定了相应的参数后,就可以通过调用PDOStatement类对象中的execute()方法,反复执行在数据库缓存区准备好的语句了.在下面的示例中,向前面提供的contactInfo表中使用预处理方式连续执行同一条INSERT语句,通过改变不同的参数添加两条记录,代码如下所示: 如果你只是要传递输入参数,并且有许多这样的参数要传递,那么,下面示例提供的快捷方式语法会非常有帮助.该示例通过在execute()方法中提供一个可选参数,该参数是由准备查询中