PHPを使用してRESTfulインタフェースを記述する方法


PHPRS@github
これは、RESTfulインタフェースを迅速に開発するために設計された軽量レベルのフレームワークです.もしあなたが私と同じように、伝統的なMVCフレームワークを使ってマイクロサービスや前後のAPIインターフェースを書くことに飽きたら、簡単なインターフェースのために余分なcoding(CTRL-C/CTrl-V)をたくさん作ることに耐えられないなら、あなたはきっとこのフレームワークが好きになります!
まず栗を挙げる
  • ハロー・ワールドを書きますphp、フレームワークで指定されたディレクトリの下(デフォルトはindex.phpと同級のapis/ディレクトリ)
    /**
     * @path("/hw")
     */
    class HelloWorld
    {
        /** 
         * @route({"GET","/"})
         */
        public function doSomething() {
            return "Hello World!";
        }
    }
  • ブラウザ入力http://your-domain/hw/Hello World!は簡単で、追加の構成は必要ありません.継承も組み合わせも必要ありません.

  • 何があったの?
    振り返ると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"           
            }
        },
    }

    マニュアル
    githubに移動してください