在 web API 中以 JSON 或 XML 格式发送数据非常常见。在开箱即用的情况下,PSR-7 实现不支持这些格式,你必须自己对请求对象的 getBody() 进行解码。由于这是一个常见需求,因此 Slim 4 提供 BodyParsingMiddleware
来处理此任务。
建议在调用 addErrorMiddlware
之前放置主体解析中间件,以便栈看起来像这样
<?php
use Slim\Factory\AppFactory;
require_once __DIR__ . '/../vendor/autoload.php';
$app = AppFactory::create();
// Parse json, form data and xml
$app->addBodyParsingMiddleware();
$app->addRoutingMiddleware();
$app->addErrorMiddleware(true, true, true);
// ...
$app->run();
无需对 POST 处理程序进行任何更改,因为 BodyParsingMiddleware
检测到 Content-Type
设置为 JSON
媒体类型,并将解码后的主体放入请求的解析后的主体属性中。
对于从浏览器发布到网站的数据,可以使用 $request 的 getParsedBody()
方法。
这将返回已发布数据的数组。
$app->post('/', function (Request $request, Response $response, $args): Response {
$data = $request->getParsedBody();
$html = var_export($data, true);
$response->getBody()->write($html);
return $response;
});
Content-Type
以检测媒体类型。application/
。