在網路 API 中,使用 JSON 或 XML 格式傳送資料非常常見。開箱即用的 PSR-7 實作不支援這些格式,您必須自行解碼 Request 物件的 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/
。