具有不同响应的 Laravel api 方法
Posted
技术标签:
【中文标题】具有不同响应的 Laravel api 方法【英文标题】:Laravel api method with different response 【发布时间】:2020-08-12 19:20:06 【问题描述】:我正在构建基于 Laravel 6 的 Api 服务器。
我有未经授权请求的端点。获取:/user/dummyuser
此方法返回 Dummyuser 的 JSON 数据。没关系。
但是,如果我将令牌作为 GET 参数传递到同一端点,我需要获取附加数据。
例如,
GET:/user/dummyuser
响应用户信息
GET:/user/dummyuser?token=ABCD
响应用户信息和添加
我该如何管理它?
【问题讨论】:
您好,请使用以下内容:if($request->has('token')) return ... ;
【参考方案1】:
假设你的路线是这样的:
Route::get("/user/dummyuser/token?", "Controller@get_token");
你的方法是这样的,因为任何带参数或不带参数、带或不带身份验证的请求都可以工作。
public function get_tag($token = "", Request $request)
// alternative method
if (($user = Auth::user()) !== null)
// Here you have your authenticated user model
return response()->json($response);
// return general data
return response()->json($response);
希望对你有所帮助。
【讨论】:
【参考方案2】:你可以使用我为我的项目编写的这个函数:
public function __construct($includes = null)
parent::__construct();
$this->includes = $includes;
if (strstr($this->includes, 'order'))
$products = $order->product()->get();
if (count($products))
return ((new ApiController())->respondWithTransform($products, (new ProductTransformer($this->includes))))->original['data'];
return null;
所以如果我的路线中包含 includes='order',那么它会生成一些额外的数据
这里是 strstr 的链接:strstr
【讨论】:
以上是关于具有不同响应的 Laravel api 方法的主要内容,如果未能解决你的问题,请参考以下文章
Android HttpUrlConnection Post 方法 - Json - Laravel API 对错误的响应