Lumen 5.5 在每个 json 响应中发送一个默认参数

Lumen 5.5 Send a default parameter in each json response

我正在寻找一种在每个 JSON 响应中发送附加参数以向用户发送当前订阅状态的方法。

我正在检查 App\Http\Middleware 中的订阅状态,它会检查用户订阅状态并处理请求,如果我可以从中间件发送全局参数就太好了。

您可以在模型中使用追加并将突变设置为该参数,如下所示

protected $appends = ['subscribed'];

public function getSubscribedAttrubite() {
  // you login of checking the the subscriber has subscription 
}

您可以使用 After Middleware 来执行此操作。

在中间件之后运行之后调用了一个控制器方法,这意味着您可以在将响应发送到浏览器之前修改响应(添加您的密钥)。

例如:

<?php

namespace App\Http\Middleware;

use Closure;

class AddSubscription
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        $data = $response->getData();
        $data['subscription'] = getSubscriptionData(); // Put your subscription data here
        $response->setData($data);

        return $response;
    }
}

查看文档:https://lumen.laravel.com/docs/5.5/middleware#defining-middleware(滚动到中间件之前/之后

如果您将其添加到其他控制器从

扩展的主控制器中会怎样
public function respondJson($message,$status,$statusCode=200,$headers=[])
{
    return response()->json([
          'data'=>[
                    message'=>$message,
                   'subscriptionStatus'=>$status
                  ]
           ],$statusCode,$headers);
}

在你的控制器中你可以这样称呼它

$this->respondJson('some message',$status);