ruta
1.0.0

PHP輕巧的HTTP路由庫。 (WIP)
multipart/form-data請求數據x-www-form-urlencoded請求數據application/xml請求數據application/json請求數據query URI請求參數path和headers /abc/{some} /abc/regex(id=^[0-9]+$) /abc/{some?} 請參閱基於Ruta的Leap Micro-Framework。
PHP 8.0或更新。
通過作曲家安裝
composer require joseluisq/ruta:dev-master <?php
declare (strict_types= 1 );
require ' vendor/autoload.php ' ;
use Ruta Header ;
use Ruta Method ;
use Ruta Ruta ;
use Ruta Request ;
use Ruta Response ;
use Ruta Status ;
// 1. Callback style
// NOTE: `Request`, `Response`, `array` (slug arguments) are passed to the callback.
// However they are optional and their order can be modified. See more examples below.
Ruta:: get ( ' /home/hola ' , function ( Request $ req , Response $ res ) {
$ res -> json ([
' host ' => $ req -> header (Header::Host),
' headers ' => $ req -> headers (),
]);
});
Ruta:: get ( ' /home/hola/redirect ' , function ( Response $ res ) {
$ res -> redirect ( ' /home/aaa/some/bbb ' );
});
Ruta:: get ( ' /reg/regex(id=^[0-9]+$)/exp ' , function ( Response $ res , array $ args ) {
$ res -> json ([ ' args ' => $ args ]);
});
Ruta:: post ( ' /home/{path3}/some2 ' , function ( Response $ res ) {
$ res -> json ([ ' post_data ' => 11010101010 ]);
});
Ruta:: some ( ' /home/some ' , [Method:: POST , Method:: PUT ], function ( Request $ req , Response $ res ) {
$ res -> json ([ ' only ' => $ req -> method ()]);
});
Ruta:: any ( ' /home/methods ' , function ( Request $ req , Response $ res ) {
$ res -> json ([ ' method ' => $ req -> method ()]);
});
Ruta:: post ( ' /home/{path} ' , function ( Response $ res ) {
$ res
-> header ( ' X-Header-One ' , ' Header Value 1 ' )
-> header ( ' X-Header-Two ' , ' Header Value 2 ' )
-> json ([ ' some_data ' => 223424234 ]);
});
// 2. class/method style
class HomeCtrl
{
public function index ( Request $ req , Response $ res , array $ args )
{
// 2.1 $args contains route placeholder values
if ( array_key_exists ( ' path1 ' , $ args )) {
// do something...
}
// 2.2. Get data provided via `multipart/form-data`
$ data = $ req -> multipart ();
// 2.3. Get all headers
$ data = $ req -> headers ();
// 2.4. Get a single header
$ data = $ req -> header ( " Host " );
// 2.5. Get data provided via `application/x-www-form-urlencoded`
$ data = $ req -> urlencoded ();
// 2.6. Get data provided via `application/json`
$ data = $ req -> json ();
// 2.7. Get data provided via `application/xml`
$ data = $ req -> xml ();
// 2.8. Get query data
$ data = $ req -> query ();
$ res -> json ([ ' data ' => ' Message from a class! ' ]);
}
// Custom 404 reply
public function not_found ( Response $ res )
{
$ res
-> status (Status::NotFound)
-> text ( " 404 - Page Not Found! " );
}
}
Ruta:: get ( ' /home/{path1}/some/{path2} ' , [HomeCtrl::class, ' index ' ]);
// 3. Handle 404 not found routes
Ruta:: not_found ([HomeCtrl::class, ' not_found ' ]);文件:示例/nginx/public/index.php
# Or run example using Docker + Nginx server
make compose-up # Run example using the PHP built-in server
make container-dev現在導航到http:// localhost:8088/home/hola
請隨時發送拉動請求或提交某些問題。
除非您另有明確說明,否則任何有意提交的捐款(如Apache-2.0許可證中定義)應為雙重許可,如下所述,沒有任何其他條款或條件。
隨時發送一些拉動請求或問題。
這項工作主要根據MIT許可證和Apache許可證的條款(版本2.0)分發。
©2021-tresent Jose Quintana