我一直在尝试从thephpleague路由的精彩包的当前版本。
我有一个简单的索引页面来处理路由,它工作得很好。
<?php declare(strict_types=1);
use Laminas\Diactoros\ServerRequestFactory;
use Laminas\HttpHandlerRunner\Emitter\SapiEmitter;
use Laminas\Diactoros\ResponseFactory;
use League\Route\Router;
use League\Route\Strategy\JsonStrategy;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
$strategy = new JsonStrategy(new ResponseFactory());
$router = new Router;
$router->setStrategy($strategy);
$router->post(
'/hello',
function (ServerRequestInterface $request): ResponseInterface
{
var_dump($request->getParsedBody());
}
);
$request = ServerRequestFactory::fromGlobals(
$_SERVER,
$_GET,
$_POST,
$_COOKIE,
$_FILES
);
$response = $router->dispatch($request);
// send the response to the browser
(new SapiEmitter)->emit($response);
我的问题是当我发送一个POST
包含数据的请求JSON
时,我无法在我的代码中捕获它,如 line 所示var_dump($request->getParsedBody());
。
目前,我能够捕获随请求发送的数据的唯一方法是运行json_decode(file_get_contents('php://input'), true);
.
我需要做什么才能获得随任何请求发送的有效负载,无论是GET
, POST
, PUT
,PATCH
还是其他?
谢谢你。