此包将创建http服务,该服务将创建端点、接收请求并发送响应

v1.0.0 2024-01-23 22:55 UTC

This package is auto-updated.

Last update: 2024-09-16 17:22:56 UTC


README

此包将为您的API项目提供所有必要的HTTP资源。

如何安装

composer require patrick-barreto/Http

如何使用

重要:请确保在您的服务器配置文件中将所有请求重定向到index.php。

基本来说,您将使用Http抽象来操作此包中的所有资源。

use Http\Http;

路由

  • POST
    Http::post(string $endpoint, Closure $controllerCallBack, array $middlewares = []);
  • GET
    Http::get(string $endpoint, Closure $controllerCallBack, array $middlewares = [])
  • PUT
    Http::put(string $endpoint, Closure $controllerCallBack, array $middlewares = [])
  • PATCH
    Http::patch(string $endpoint, Closure $controllerCallBack, array $middlewares = [])
  • DELETE
    Http::delete(string $endpoint, Closure $controllerCallBack, array $middlewares = [])

重要:对于相同的http方法声明,路由的顺序必须是

  • 静态路由优先,
  • 动态路由最后。

中间件

创建中间件

您需要导入Middleware接口来确保您实现了有效的中间件语法。

您的中间件必须是一个类,如下所示

<?php

use Http\Middleware\MiddlewareInterface;

class Middleware implements MiddlewareInterface {
    public function handler($request, $callback){
        //Put your code here, change the $request instance..
        return $callback($request);
    }
}

重要:这是您可以操作的请求实例,您可以从系统中的回调函数参数中获取此实例,在路由声明中传递给您的控制器所有请求或特定数据。

使用您的中间件

要使用您的中间件,您需要将它们的命名空间填充到系统中,并通知是否执行默认操作。

将新的中间件命名空间添加到中间件命名空间映射中

Http::middleware(string $name, string $namespace, bool $defaultForAllRoutes = false)

默认中间件会为所有路由执行。

重要:与路由一样,默认中间件声明的顺序非常重要。它将是执行顺序。对于非默认中间件,要使用它们,您需要通知中间件名称,在执行顺序中在默认中间件之后执行。

响应

要为任何请求发送响应,您不能使用Http::response,此方法具有默认响应值的默认值。

Http::response($response = ['success'=>true],  int $statusCode = 200, array $headers = ["Content-Type" => "application/json"]) ;

请求类

请求类存储来自请求的有用数据。这些信息是静态的,可以在系统中的任何地方访问。

在中间件中,您可以将个人数据增加到请求实例类中,该类将在回调参数中提供给您在路由声明时,您将传递所有请求或特定数据到控制器。

您的特定数据将不是静态数据,而是一个实例数据。静态数据可以通过以下方法访问

您可以在以下位置找到

  1. HTTP方法
  2. HTTP头
  3. 请求路由
  4. 查询字符串
  5. 路径参数
  6. 请求体

回调的第一个参数是保留给请求的,您可以自由命名它。

方法

此方法负责返回请求方法

public static function getMethod()
  • 返回字符串

此方法负责返回请求头

public static function getHeaders()
  • 返回数组

此方法负责返回请求参数数据,路径参数和查询字符串

public static function getRoute()
  • 返回数组|字符串

此方法负责设置查询字符串数据。

public static function getQueryStrings()
  • 返回数组

此方法负责获取路径参数

public static function getPathParams()
  • 返回数组

此方法负责返回请求所有数据方法

public static function getAllStaticData()
  • 返回数组

此方法负责返回请求体

public static function getBody()
  • 返回数组

运行

  • 在声明路由和中间件以及中间件名称映射后,启动应用程序。
    Http::run()

CORS

要配置您的CORS策略,您可以使用CORS方法。

Http::CORS(
            array $accessControlAllowOrigin = ['*'], 
            array $accessControlAllowMethods = ['POST', 'GET', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
            array $accessControlAllowHeaders = ['Content-Type'],
            bool $accessControlAllowCredentials = false,
            array $accessControlExposeHeaders = ['Content-Type'],
            int $accessControlMaxAge = 86400 
        );

重要:此方法将为所有路由创建全局配置CORS。如果您需要更详细配置,您可以创建中间件并更改特定头。

示例:

使用此包的示例

中间件声明

<?php
namespace Api\Middlewares;

use Http\Middleware\MiddlewareInterface;

class Authorization implements MiddlewareInterface {
    public function handler($request, $callback){
        $request->auth = $this->validadeToken($request);
        return $callback($request);
    }

    private function validadeToken($request){
        //Validade with request headers and return true or false
    }
}
<?php
namespace Api\Middlewares;

use Http\Middleware\MiddlewareInterface;

class AccessTokenValidade implements MiddlewareInterface {
    public function handler($request, $callback){
        //Validade your accessToken
        return $callback($request);
    }
}

MiddlewareMap.php

此文件将填充中间件队列,包含中间件命名空间和名称。

<?php
use Http\Http;

//Middlewares default
Http::middleware('AccessTokenValidade', 'Api\Middlewares\AccessTokenValidade', true);

//Middlewares to routes use.
Http::middleware('Auth', 'Api\Middlewares\Authorization');

Routes.php

这是我们声明路由的文件。也可以有多个文件。

<?php

use Http\Http;

Http::post('/createAccount', function($request) {
    $return = new YourController($request);
    Http::response());

Http::post('/login', function($request) {
    $return = new YourController($request);
    Http::response($return, 
                    200, 
                    [
                        ["Content-Type" => "application/json"],
                        ['Authorization' => $return['JWT']],
                    ]);
                });

Http::get('/users', function($request) {
    $return = new YourController($request);
    Http::response($return)
}, 
['Auth']);

要将所有路由加载到系统中,可以使用

    Http::loadRoutesFromPath(string $dirRoutesName);

它将加载指定路径下的所有文件。在运行应用程序之前使用它。

index.php

    <?php

    use Http\Http;

    require_once "./vendor/autoload.php"; //autoload PSR-4
    require_once "./MiddlewaresMap.php";

    Http\Http::CORS();

    Http::loadRoutesFromPath('./Routes/')
    
    //if you need to put anything more in this system part, put here.

    Http::run();