awesome-packages/awesome-routes

一个处理路由的强大库

v2.0.1 2021-06-08 14:57 UTC

This package is auto-updated.

Last update: 2024-09-08 21:49:31 UTC


README

awesome-routes

Total Downloads Size codecov.io CodeFactor travis-ci Issues Pull Request's Gitmoji

如何安装

使用以下命令安装包:

composer require awesome-packages/awesome-routes

如何使用

该库使用RESTFUL API概念,例如

<?php

$router = new \AwesomePackages\AwesomeRoutes\Router();

$router->get('/user', new \Mocks\UserController(), 'index');
$router->get('/user/:id', new \Mocks\UserController(), 'show');
$router->post('/user', new \Mocks\UserController(), 'create');
$router->put('/user/:id', new \Mocks\UserController(), 'update');
$router->delete('/user/:id', new \Mocks\UserController(), 'destroy');

$router->handleRequest();

如果你向路由/user发送类型为GET的请求,则将调用UserController类的index方法。

如果你向路由/user/1发送类型为GET的请求,则将id作为参数传递给show方法。

对于路由/user的POST请求,你将在请求体中传递的所有属性将作为参数传递给create方法。

以及其他方法。以下是一个控制器示例

<?php

use AwesomePackages\AwesomeRoutes\Core\Controller;
use AwesomePackages\AwesomeRoutes\Core\Request;
use AwesomePackages\AwesomeRoutes\Core\Response;
use AwesomePackages\AwesomeRoutes\Enum\StatusCode;

class UserController implements Controller
{
      public function index(Request $request,Response $response) : Response
      {
          $response->setBody([
              ['name' => 'Rhuan Gabriel', 'age' => 23],
              ['name' => 'Eloah Hadassa', 'age' => 13]
          ]);

          $response->setStatusCode(StatusCode::SUCCESS);

          return $response;
      }
      
      public function show(Request $request,Response $response) : Response
      {
          $id = $request->id;
      
          $response->setBody([
              'name' => 'Rhuan Gabriel',
              'age' => 23
          ]);
  
          $response->setStatusCode(StatusCode::SUCCESS);
  
          return $response;
      }
      
      public function create(Request $request,Response $response) : Response
      {
          $id = $request->id;
          $body = $request->body;
          
          $response->setBody([
              'message' => 'User was created'
          ]);
          
          $response->setStatusCode(StatusCode::CREATED);
  
          return $response;
      }
      
      public function update(Request $request,Response $response) : Response
      {
          $id = $request->id;
          $body = $request->body;
      
          $response->setBody([
              'message' => 'User has been updated'
          ]);
          
          $response->setStatusCode(StatusCode::SUCCESS);
  
          return $response;
      }
      
      public function destroy(Request $request,Response $response) : Response
      {
          $id = $request->id;
          
          $response->setBody([
              'message' => 'User has been deleted'
          ]);
          
          $response->setStatusCode(StatusCode::SUCCESS);
  
          return $response;
      }
}

还有一个resource方法,它根据以下表创建路由。

<?php

$router = new \AwesomePackages\AwesomeRoutes\Router();

$router->resource('/user', new \Mocks\UserController());
$router->handleRequest();

许可证

MIT © AwesomeRoutes