Web API でデータを送信するために JSON または XML 形式を使用するのはごく一般的です。PSR-7 実装はすぐにこれらの形式をサポートしません。要求オブジェクトの getBody() を自分でデコードする必要があります。一般的な要件であるため、Slim 4 は BodyParsingMiddleware
を提供して、このタスクを処理します。
body 解析ミドルウェアを 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();
Content-Type
が JSON
メディアタイプに設定されていることを BodyParsingMiddleware
が検出し、デコードされたボディを Request の解析された body プロパティに配置するので、POST ハンドラーに変更は必要ありません。
ブラウザーから Web サイトに投稿されたデータの場合、$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/
.