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);
我正在寻找一种在每个 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);