基于互联网的应用正变得愈来愈普及,在这个过程当中,有更多的站点将自身的资源开放给开发者来调用。对外提供的API 调用使得站点之间的内容关联性更强,同时这些开放的平台也为用户、开发者和中小网站带来了更大的价值。php
在开发API前,你须要的是给API设定一个框架,这个框架必定是要简单的且是容易扩展的。下面就是用就来看看如何使用PHP来建立一个API。数据库
API框架须要的特性json
API框架的组成部分api
API Framework主要由下面三中类型元素组成:app
在一个运行的API中,每种类型的元素都有其本身的任务。下面就来详细说说每一种元素。框架
一般的API请求URL以下:dom
http://www.domain.com/api/version/service/method/param_name/param_key.extension网站
Service Class是API请求的控制器。这个Class包含了API可使用的method,因此Service Class会须要计算和处理数据。this
为了使method能够被请求,你须要将method设置为公开(public),并为service method设置请求类型(GET, POST, PUT, DELETE)。url
下面是一个Service Class的类,你能够设置默认的请求方式为GET,而且version method能够接受GET和POST请求。
这里是一个可使用的使用的API请求类型:
若是你但愿方法( method)名以驼峰式命名的话,如:
public myNewHelloWorld{}
那么你就须要在你的url中使用”my-new-hello-world”来请求这个方法(/v1/helloworld/my-new-hello-world.xml)。
Hook
Hook是一个能够绑定特定行为的类。哪些Hooks 会在执行力中执行特定的点(如图所示)。它可让你在服务使用前修改数据。下面是一些可能的hook示例:
上面的只是一些示例,你能够发挥你的想象任意的添加Hook。下面是一个关于Hook的实例:
为了使上面的Hook能够正常的工做,你须要在config文件中添加这样一行:
block = ip1,ip2,ip3
接下来就是讲解不一样种类的hook了:
若是要启用钩子则须要到程序的入口(endpoint.php)进行修改。
解析器用来转化数据到特定的输出格式的。例如是XML,机械器就是用定义的APi请求文件扩展名来表示。例如:
你能够根据本身的需求定义标准的解析器,如:
下面是一种相似PHP中print_r的输出格式示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
class
Api_Parser_Printr
extends
Api_Parser_IParser
{
/**
* Content type
* @var string
*/
public
$content_type
=
"text/plain"
;
/**
* Parse to XML
*
* @return string
*/
public
function
parse
(
)
{
return
print_r
(
$this
-
&
gt
;
_data
,
true
)
;
}
}
|
框架会根据命名规则自动寻找适合的输出格式。
要顺利的开发一个PHP API,除了以上的这些还须要作的有: