legionth/http-rest

基于ReactPHP的REST HTTP服务器

v0.3.0 2019-02-14 11:30 UTC

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