yohan / rest-flex-php
RestFlexPHP 是一个精心打造的强大 PHP 包,旨在简化处理 HTTP 请求的复杂性,主要关注增强您管理 RESTful API 的体验。此包提供了一个优雅且易于开发的接口,让您能够轻松发送请求
1.0.8
2023-11-18 09:51 UTC
This package is auto-updated.
Last update: 2024-09-08 18:37:32 UTC
README
RestFlexPHP
是一个轻量级的 PHP 包,旨在简化处理 RESTful 请求和响应。它包括一个灵活的控制器类 (RestFlexController
) 用于路由请求,以及一个请求类 (RestFlexRequest
) 用于封装与请求相关的数据。
安装
您可以使用 Composer 安装 RestFlexPHP
composer require yohan/rest-flex-php
设置 URL 重写
为了启用您的 RESTful API 的 URL 重写,您需要在主逻辑文件(例如 index.php
)所在的目录中创建一个 .htaccess
文件。该文件应包含以下 mod_rewrite 规则
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /path-from-the-root/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ ./index.php?url=$1 [QSA,L] </IfModule>
用法
RestFlexController
RestFlexController
类提供了一个简单的路由机制来处理 HTTP 请求。您可以使用 get、post、put 和 delete 方法来定义路由。
示例
<?php use RestFlexPHP\RestFlexController; use RestFlexPHP\RestFlexRequest; // Retrieving a controller instance $controller = RestFlexController::getController(); // Define a route for GET requests $controller->get('/users/{id}', function (RestFlexRequest $request) { // Handle the GET request for the "/users/{id}" path $userId = $request->pathVariables['id']; // Your custom logic here... // Finally send the response to the client $request->sendResponse($data, HttpStatus::OK); }); // Other route definitions... // Handle unmatched routes $controller->noMapping(function (RestFlexRequest $request) { // Handle unmatched routes or provide a default 404 response $request->sendResponse('Route not found', HttpStatus::NOT_FOUND); }); ?>
示例:使用不同类分离不同的路由。
以下是一个简单示例,演示如何使用 RestFlexPHP
创建一个基本的 UserController,具有与用户相关的路由。
UserController.php
<?php use RestFlexPHP\RestFlexController as RFC; use RestFlexPHP\RestFlexRequest as RFR; class UserController { public function __construct(RFC $controller) { $controller->get('users/getAllUsers', [$this, 'getAllUsers']); $controller->get('users/getUser/{id}', [$this, 'getUser']); } public function getAllUsers(RFR $req) { $req->sendResponse(/* all your users */); } public function getUser(RFR $req) { $userId = $req->pathVariables['id']; // $user = your logic to find user by user id from the database. $req->sendResponse($user); } } ?>
index.php
<?php use RestFlexPHP\RestFlexController; $controller = RestFlexController::getController(); // Instantiate UserController, which will define routes new UserController($controller); // Handle unmatched routes $controller->noMapping(); ?>
RestFlexRequest
RestFlexRequest
类封装了与请求相关的数据,并提供了发送 JSON 响应的便捷方法 (sendResponse)。
示例
$controller->put('/users/{id}', function (RestFlexRequest $request) { // Access path variables using pathVariables array $userId = $request->pathVariables['id']; // Access request body using body property $data = $request->body; // Access URL query parameters using params property $params = $request->params; // Finally send the response back to the client $request->sendResponse($data, HttpStatus::OK); });
贡献
如果您发现了一个错误,有一个功能请求或想要贡献,请打开一个 issue 或提交一个 pull request。欢迎贡献!
许可证
此包根据 Apache-2.0 许可证 许可。