Dingo API为所有回复添加元数据

时间:2016-06-13 12:49:34

标签: php api laravel-5 dingo-api

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

0 个答案:

没有答案