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

Posted itxdl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《细说PHP》第四版 样章 第23章 自定义PHP接口规范 3相关的知识,希望对你有一定的参考价值。

23.2  接口实现的基础

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

 

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格式作为接口返回值的使用案例。

 

技术图片

技术图片

技术图片

以上是关于《细说PHP》第四版 样章 第23章 自定义PHP接口规范 3的主要内容,如果未能解决你的问题,请参考以下文章

2018-04-23 《鸟哥的Linux私房菜 基础学习篇(第四版)》 第19章 认识与分析日志文件 笔记

2018-04-23 《鸟哥的Linux私房菜 基础学习篇(第四版)》 第19章 开机流程模块管理与Loader 笔记

java编程思想第四版第九章总结

高等代数(第四版) 王萼芳课后答案

java编程思想第四版第9章

《JavaScript高级程序设计(第四版)》学习笔记第3章