首頁 > 後端開發 > php教程 > PHP寫出RESTful介面的方法

PHP寫出RESTful介面的方法

高洛峰
發布: 2023-03-04 15:36:02
原創
2087 人瀏覽過

這是一個輕量級框架,專為快速開發RESTful介面而設計。如果你和我一樣,厭倦了使用傳統的MVC框架編寫微服務或前後端分離的API接口,受不了為了一個簡單接口而做的很多多餘的coding(和CTRL-C/CTRL-V),那麼,你一定會喜歡這個框架!

先舉個栗子
1、寫個HelloWorld.php,放到框架指定的目錄下(預設是和index.php同級的apis/目錄)

/**
 * @path("/hw")
 */
class HelloWorld
{
  /** 
   * @route({"GET","/"})
   */
  public function doSomething() {
    return "Hello World!";
  }
}
登入後複製

2、瀏覽器輸入http://your- domain/hw/
你會看到:Hello World!就是這麼簡單,不需要額外配置,不需要繼承也不需要組合。
發生了什麼事
回過頭看HelloWorld.php,特殊的地方在於註解(@path,@route),沒錯,框架透過註解取得路由資訊和綁定輸入輸出。但不要擔心效能,註解只會在類別文件修改後解析一次。更多的@註釋後面會說明。

再看個更具體的例子
這是一個登入介面的範例

/**
 * 用户权限验证
 * @path("/tokens/") 
 */
class Tokens
{ 
  /**
   * 登录
   * 通过用户名密码授权
   * @route({"POST","/accounts/"}) 
   * @param({"account", "$._POST.account"}) 账号
   * @param({"password", "$._POST.password"}) 密码
   * 
   * @throws ({"InvalidPassword", "res", "403 Forbidden", {"error":"InvalidPassword"} }) 用户名或密码无效
   * 
   * @return({"body"})  
   * 返回token,同cookie中的token相同,
   * {"token":"xxx", "uid" = "xxx"}
   *
   * @return({"cookie","token","$token","+365 days","/"}) 通过cookie返回token
   * @return({"cookie","uid","$uid","+365 days","/"}) 通过cookie返回uid
   */
  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];
  } 
  /**
   * @property({"default":"@Users"})  依赖的属性,由框架注入
   * @var Users
   */
  public $users;
}
登入後複製

還能做什麼

依賴管理(依賴注入),

自動輸出介面文件(不是doxgen式的類別、方法,而是描述http介面的文檔)

介面快取

hook

配合ezsql存取資料庫
ezsql是一款簡單的物件導向的sql建置工具,提供簡單的基本sql操作。
介面

/** @path(/myclass) */
class MyClass{
 
  /**
  * @route({"GET","/do"})
  * @param({"arg0","$._GET.arg0"})
  */
  public doSomething($arg0){
    return Sql::select('xxx')->from('table_xxx')->where( 'xxx = ?', $arg0)->get($this->db);
  }
  /**
   * 依赖注入PDO实例
   * @property
   * @var PDO
   */
  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"     
    }
  },
}
登入後複製

以上就是本文的全部內容,希望對大家的學習有所幫助。

更多PHP寫RESTful介面的方法相關文章請注意PHP中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板