patrick-barreto / http
此包将创建http服务,该服务将创建端点、接收请求并发送响应
Requires
- php: >=7.0
- patrick-barreto/exception: ^1.0
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"]) ;
请求类
请求类存储来自请求的有用数据。这些信息是静态的,可以在系统中的任何地方访问。
在中间件中,您可以将个人数据增加到请求实例类中,该类将在回调参数中提供给您在路由声明时,您将传递所有请求或特定数据到控制器。
您的特定数据将不是静态数据,而是一个实例数据。静态数据可以通过以下方法访问
您可以在以下位置找到
- HTTP方法
- HTTP头
- 请求路由
- 查询字符串
- 路径参数
- 请求体
回调的第一个参数是保留给请求的,您可以自由命名它。
方法
此方法负责返回请求方法
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();