基於互聯網的應用正變得愈來愈普及,在這個過程當中,有更多的站點將自身的資源開放給開發者來調用。對外提供的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,除了以上的這些還須要作的有: