我正在尝试使用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 端点。