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

Total Downloads Latest Stable Version

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 许可证 许可。