主體剖析中介軟體

在網路 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();

已張貼的 JSON、表單或 XML 資料

無需變更 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 來偵測媒體類型。
  • 檢查此特定媒體類型是否已註冊剖析器。
  • 若否,尋找具有結構化語法後綴(RFC 6839)的媒體類型,例如 application/

支援媒體類型

  • application/json
  • application/x-www-form-urlencoded
  • application/xml
  • text/xml