Dingo Apiを使用して、すべての API 応答にユーザー固有のメタデータを追加しようとしています。これはミドルウェアで行われると想定しましたAddMetadata
:
<?php
namespace App\Http\Middleware\Api;
use Closure;
use Dingo\Api\Http\Request;
class AddMetadata {
public function handle(Request $request, Closure $next)
{
$response = $next($request);
/*
* Dingo API response has the ability to modify metadata responses
*/
if ($response instanceof \Dingo\Api\Http\Response) {
$oldMeta = $response->getMeta();
$meta = array_merge($oldMeta, $request->user()->metadata());
$response->setMeta($meta);
}
return $response;
}
}
私が見つけたのは、この時点でのレスポンスはもはやDingo APIレスポンスではないため、メタデータを追加できないということです。メソッドを使用して古いリクエストから新しいレスポンスを作成しようとしDingo\Api\Http\Response::makeFromExisting()
ましたが、新しいレスポンスをインスタンス化しようとしましたが、ミドルウェアに到達する前に Dingo Api レスポンスが処理されているようです。
ユーザー固有のメタデータを応答に追加する最も効率的な方法は何ですか? 理想的には、すべての API エンドポイントに個別に追加したくありません。