php api 框架開發的學習
基於網際網路的應用正變得越來越普及,在這個過程中,有更多的站點將自身的資源開放給開發者來呼叫。對外提供的api 呼叫使得站點之間的內容關聯性更強,同時這些開放的平台也為使用者、開發者和中小**帶來了更大的價值。
在開發api前,你需要的是給api設定乙個框架,這個框架一定是要簡單的且是容易擴充套件的。下面就是用就來看看如何使用php來建立乙個api。
api框架需要的特性
api框架的組成部分
api framework主要由下面三中型別元素組成:
在乙個執行的api中,每種型別的元素都有其自己的任務。下面就來詳細說說每一種元素。
通常的api請求url如下:
service
service class是api請求的控制器。這個class包含了api可以使用的method,所以service class會需要計算和處理資料。
為了使method可以被請求,你需要將method設定為公開(public),並為service method設定請求型別(get, post, put, delete)。
下面是乙個service class的類,你可以設定預設的請求方式為get,並且version method可以接受get和post請求。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
classmyapi_service_helloworldextendsapi_service_iservice
publicfunctionexecute($params,$config)
publicfunctionversion($params,$config)
} 這裡是乙個可以使用的使用的api請求型別:
如果你希望方法( method)名以駝峰式命名的話,如:
public mynewhelloworld{}
那麼你就需要在你的url中使用」my-new-hello-world」來請求這個方法(/v1/helloworld/my-new-hello-world.xml)。
hook
hook是乙個可以繫結特定行為的類。哪些hooks 會在執行力中執行特定的點(如圖所示)。它可以讓你在服務使用前修改資料。下面是一些可能的hook示例:
上面的只是一些示例,你可以發揮你的想象任意的新增hook。下面是乙個關於hook的例項:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
classapi_hook_blockipextendsapi_hook_ihook}}
為了使上面的hook可以正常的工作,你需要在config檔案中新增這樣一行:
block = ip1,ip2,ip3
接下來就是講解不同種類的hook了:
如果要啟用鉤子則需要到程式的入口(endpoint.php)進行修改。
parsers
解析器用來轉化資料到特定的輸出格式的。例如是xml,機械器就是用定義的api請求副檔名來表示。例如:
你可以根據自己的需求定義標準的解析器,如:
下面是一種類似php中print_r的輸出格式示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
classapi_parser_printrextendsapi_parser_iparser
} 框架會根據命名規則自動尋找適合的輸出格式。
要順利的開發乙個php api,除了以上的這些還需要做的有:
建立乙個基本的api配置檔案,並修改好程式的入口。
配置自己想要的rest url結構。
記錄介面中產生的錯誤。~
分類:
php
關於框架開發
紀念 jar library installation jar檔案複製的目錄 2種方式區別 1.add checked libraries to project build path 把build path中引入的包指向myeclipse中lib的位置,就是把myeclipse中你需要的lib作為外...
框架開發1
config.inc.php配置檔案 cfg array cfg host localhost cfg user root cfg password 111111 conf.class.php讀取配置檔案的資訊,封裝類 單例類 class conf final protected function ...
Karrigell Web框架開發簡介
karrigell 是乙個語法簡潔直觀的 python web 框架。它支援任何一種資料庫,orm或者模板引擎,也可以讓開發人員選擇不同的編碼方式。karrigell 包自帶乙個功能強大的 web伺服器和乙個用 python 寫成的資料庫引擎 pydblite 在自帶的 demo 程式中使用到了這個...