PHPを使用してRESTfulインタフェースを記述する方法
PHPRS@github
これは、RESTfulインタフェースを迅速に開発するために設計された軽量レベルのフレームワークです.もしあなたが私と同じように、伝統的なMVCフレームワークを使ってマイクロサービスや前後のAPIインターフェースを書くことに飽きたら、簡単なインターフェースのために余分なcoding(CTRL-C/CTrl-V)をたくさん作ることに耐えられないなら、あなたはきっとこのフレームワークが好きになります!
まず栗を挙げるハロー・ワールドを書きますphp、フレームワークで指定されたディレクトリの下(デフォルトはindex.phpと同級のapis/ディレクトリ) ブラウザ入力http://your-domain/hw/
何があったの?
振り返るとphp,特殊な点は注釈(@path,@route)であり,間違いなくフレームワークは注釈によってルーティング情報とバインド入出力を取得する.ただし、パフォーマンスの心配はありません.コメントはクラスファイルの変更後に一度だけ解析されます.もっと@コメントは後で説明します.
もっと具体的な例を見てみましょう
これはログインインタフェースの例です
何ができるの?依存管理(依存注入)、 自動出力インタフェースドキュメント(doxgen式のクラス、メソッドドキュメントではなくhttpインタフェースを記述するドキュメント) インタフェースキャッシュ hook
ezsqlと連携してデータベースにアクセス
ezsqlはオブジェクト向けの簡単なsql構築ツールであり、簡単な基本的なsql操作を提供します.インタフェース
プロファイル
マニュアル
githubに移動してください
これは、RESTfulインタフェースを迅速に開発するために設計された軽量レベルのフレームワークです.もしあなたが私と同じように、伝統的なMVCフレームワークを使ってマイクロサービスや前後のAPIインターフェースを書くことに飽きたら、簡単なインターフェースのために余分なcoding(CTRL-C/CTrl-V)をたくさん作ることに耐えられないなら、あなたはきっとこのフレームワークが好きになります!
まず栗を挙げる
/**
* @path("/hw")
*/
class HelloWorld
{
/**
* @route({"GET","/"})
*/
public function doSomething() {
return "Hello World!";
}
}
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;
}
何ができるの?
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に移動してください