legionth / http-rest
基于ReactPHP的REST HTTP服务器
v0.3.0
2019-02-14 11:30 UTC
Requires
- react/http: ^0.8.3
Requires (Dev)
- phpunit/phpunit: ^6.4 || ^5.7 || ^4.8.35
This package is auto-updated.
Last update: 2024-09-17 19:55:22 UTC
README
创建ReactPHP HTTP服务器但具有REST功能
目录
示例
这是一个HTTP服务器,每当请求到达<address>/say/hello
时都会响应一个hello
。
其他所有调用都将返回404响应。
$loop = \React\EventLoop\Factory::create(); $server = new \Legionth\React\Http\Rest\Server(); $server->get('/say/hello', function (\Psr\Http\Message\ServerRequestInterface $request, callable $next) { return new \React\Http\Response(200, array(), 'hello'); }); $socket = new \React\Socket\Server(isset($argv[1]) ? $argv[1] : '0.0.0.0:0', $loop); $server->listen($socket); $loop->run();
请确保回调函数有2个参数。第一个参数始终是PSR-7请求对象。第二个参数是您API中定义的下一个端点。如果没有提供下一个函数,它将使用服务器的默认函数,该函数将默认创建404错误。
用法
服务器
Server
使用ReactPHP HTTP服务器并使用其内部实现的中间件
每个端点都作为中间件添加,因此请求将按顺序传递每个函数。第二个参数(在这些示例中定义为$next
)可用于将请求传递给后续端点。
动态值
要在REST API定义中添加动态值,可以使用操作符:
$server->post('/say/:word', function (\Psr\Http\Message\ServerRequestInterface $request, callable $next, array $parameters) { $word = $parameters['word']; return new \React\Http\Response(200, array(), 'You said: ' . $word); });
现在HTTP客户端可以调用地址,例如http://localhost:8080/say/hello
。键word
和值hello
将被存储在回调函数的第三个参数中。
这里没有类型检查来验证应该使用哪个API。 /say/:word
和/say/:number
将是相同的。在这种情况下,API定义的顺序很重要。
默认回调
可以在listen
方法中定义默认回调。如果找不到定义,将使用此方法。
默认情况下,此库将响应404
HTTP响应。
参数占位符
如前一章所示,您可以使用:
来标记动态值。除了使用此策略标记动态参数之外,此库还支持通过不同类提供的其他策略
/to/path/:paramter
-Legionth\React\Http\Rest\Paramaters\Label\Colon
/to/path/[paramter]
-Legionth\React\Http\Rest\Paramaters\Label\CurlyBracket
/to/path/{paramter}
-Legionth\React\Http\Rest\Paramaters\Label\SquareBrackets
查看示例以获取更多信息。
安装
推荐通过Composer安装此库。初识Composer?
这将安装最新支持的版本
$ composer require legionth/http-rest:^0.2
许可证
MIT