本文的主要目地是為大家詳細介紹了PHP怎麼樣編寫RESTful接口的方法,詳細介紹了怎樣使用PHP編寫RESTful接口的例子,有興趣的參考一下吧。
這是一個輕量級的架構,專門為快速開發RESTful接口而設計的。要是你厭倦了使用傳統的MVC架構編寫微服務或者前後端分離的API接口,受不了為一個簡單接口而做的不少多餘的coding(和CTRL-C/CTRL-V)的話,那麼這個架構你一定會喜歡的。
先來舉一個例子:1、寫一個HelloWorld.php,放到架構指定的目錄下(預設是和index.php同級的apis/目錄)
class HelloWorld
{
public function doSomething() {
return "Hello World!";
}
}
2、在浏覽器輸入http://your-domain/hw/你将會看到:Hello World!就是這麼簡單,不需要額外配置,不需要繼承也不需要組合。
發生了什麼?回過頭看HelloWorld.php,特殊的地方在于注釋(@path,@route),不錯,架構通過注釋擷取路由資訊和綁定輸入輸出。不過别擔心性能,注釋隻會在類檔案修改以後解析一次。更多的@注釋後面再說。
再來一個更具體的例子:這是個登入接口的例子:
class Tokens
{
public function createTokenByAccounts($account, $password, &$token,&$uid){
//驗證使用者
$uid = $this->users->verifyPassword($account, $password);
Verify::isTrue($uid, new InvalidPassword($account));
$token = ...;
return ['token'=>$token, 'uid'=>$uid];
}
public $users;
}
還可以做什麼?
依賴管理(依賴注入),
自動輸出接口文檔(不是doxgen式的類、方法文檔,而是描述http接口的文檔)
接口緩存
hook
配合ezsql通路資料庫ezsql是一個簡單的面向對象的sql建構工具,提供簡單的基本sql操作。
接口
class MyClass{
public doSomething($arg0){
return Sql::select('xxx')->from('table_xxx')->where( 'xxx = ?', $arg0)->get($this->db);
}
public $db;
}
配置檔案
{
{
"MyClass":{
"properties":{
"db":"@db1"
}
},
},
"db1":{
"singleton":true,
"class":"PDO",
"pass_by_construct":true,
"properties":{
"dsn":"mysql:host=127.0.0.1;dbname=xxx",
"username":"xxxx",
"passwd":"xxxx"
}
},
}