
Легкая библиотека маршрутизации HTTP для PHP. (WIP)
multipart/form-data Data x-www-form-urlencoded application/xml -данные запроса application/json запроса данных query uri запроса uri params path запроса и headers /abc/{some} /abc/regex(id=^[0-9]+$) /abc/{some?} См. Leap Micro-Framework на основе RUTA.
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-Present Jose Quintana