小编

23.2 接口实现的根本

大家都很理解函数在本地运用,通过名称调用函数实行,并通过通报不同参数,函数有不同实行,实行后给调用者返回结果。
如果把一个函数做成一个接口远程访问,也须要这几个步骤。
利用HTTP的GET或POST等,通过URL并附带参数要求接口,接口实行后将返回值传回远真个调用者。
要求者可以是浏览器,可以是PHP或其他措辞程序,也可以是页面中的Ajax等。
当然,接口返回值的格式也是统一的,要让各种措辞和设备的要求者可以操作,常日利用XML或JSON格式作为返回数据。

php限定接口格式细说PHP第四版 样章 第23章 自界说PHP接口规范 3 Node.js

23.2.1 实现接口的访问流程

下面,我们实现一个大略的开放接口,构建一个函数通过指定ID获取一条数据返回。
仿照一张大略用户数据表“user”,并插入几条数据。
仿照MySQL数据库中user表的3条数据如表23-1所示。

表23-1 仿照MySQL数据库中user表的3条数据

在Web做事器中,创建一个名为“userapi.php”的脚本文件。
文件中声明一个show()函数,用于从数据表“user”中获取一条指定的记录。
代码如下所示:

在上面的代码中,如果用户通过URL通报精确的id参数,可以获取user表中对应的一条记录,并以关联数组格式返回。
如果参数通报禁绝确或数据表中没有查找到数据,则也以数组格式返回相应的缺点码和缺点。
通过浏览器访问接口文件演示如图23-6所示。

图23-6 通过浏览器访问接口文件演示

本例实在算不上实现一个开放接口,便是用浏览器远程访问一个PHP函数,以是还须要对本例连续进行加工,本例只是让读者理解基本的接口访问流程。

23.2.2 处理接口的返回值

上例中,接口返回的是PHP数组,利用浏览器显示给用户没有问题,但如果能遍历数组加上格式输出就更好了。
如果不是浏览调用接口,而是在别的PHP程序中或其他编程措辞中,以及App中调用这个接口,返回PHP数组格式不一定得当。
接口的返回数据格式,一定要让所有的编程措辞都可以解析。
常日利用XML或JSON作为数据交互格式。
下面,大略先容这两种格式及其利用方法。

Ø XML格式

扩展标记措辞(Extensible Markup Language,XML),用于标记电子文件,使其具有构造性的标记措辞,可以用来标记数据、定义数据类型,是一种许可用户对自己的标记措辞进行定义的源措辞。
XML利用DTD(文档类型定义,Document Type Definition)来组织数据,格式统一,跨平台和措辞,早已成为业界公认的标准。
XML非常适宜Web传输,供应统一的方法来描述和交流独立于运用程序或供应商的构造化数据。
一条用户信息利用XML措辞定义如下:

将上例userapi.php文件进行大略修正,输出XML格式的数据,作为接口的返回值。
PHP将数组转换成XML格式的方法有很多,最大略的办法是遍历数组,然后将数组元素中的“下标”和“值”转换成XML节点,再直接输出,修正后代码片段如下所示:

在上例中,自定义一个函数arrayToXml(),用于将数组转换成XML格式。
同样利用浏览器通过精确的URL测试,会在浏览器中显示一条XML格式的用户信息。
如果URL中没有带ID参数,或数据库中没有对应的数据,在浏览器中也会用XML格式显示缺点信息。
如果在其他平台或措辞中访问同样的URL,也可以操作这样XML格式的数据。

Ø JSON格式

JSON(JavaScript Object Notation)是一种轻量级的数据交流格式,具有良好的可读性和便于快速编写的特性,可在不同平台之间进行数据交流。
JSON采取兼容性很高的、完备独立于措辞的文本格式,同时也具备类似于所有编程措辞体系的行为。
这些特性使JSON成为空想的数据交流措辞。
一条用户信息利用JSON格式定义如下所示。

中文和分外符号返回的结果会转成unicode编码:

用户信息:

{\"大众id\"大众:\"大众1\公众,\"大众username\"大众:\"大众\u9ad8\u6d1b\u5cf0\公众,\公众sex\"大众:\公众\u7537\"大众,\公众age\"大众:\公众30\"大众,\"大众description\"大众:\公众\u5f88\u5e05\"大众}

缺点:

{\"大众errorno\公众:\公众SN002\"大众,\"大众errormsg\"大众:\公众\u53c2\u6570ID\u9519\u8bef\uff01\"大众}

将上例userapi.php文件进行大略修正,输出JSON格式,作为接口的返回值。
PHP函数库中自带一个json_encode()函数,可以直接将数组转换成JSON格式的字符串。
修正后代码片段如下所示:

利用同样的方法进行测试,在其他平台或措辞中访问相同的URL,也可以操作这样JSON格式的数据。

JSON和 XML非常相似,它们都试图通过建立一种大略、人类可读的格式存储数据,让所有编程措辞都可以处理,也都可以作为接口的数据返回值,在接口中运用也都能跨平台和措辞。
JSON在过去几年中已变得非常受欢迎,虽然可读性比XML略差一些,但存储和传输相同的信息,JSON确实须要更少的空间,解析速率更快。
其余,JSON在设计时是为Web考虑的,以是它在JavaScript中利用得很好,很随意马虎用JSON中的信息添补一个Web页面。
本章仅列出以JSON格式作为接口返回值的利用案例。