具有不同响应的 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 对错误的响应

在具有不同对象的单个数组中获取 API 响应

从 laravel 调用 HTTPS 请求到外部 API

如何反序列化具有相同名称但不同类型的 API 响应

如何访问输入的令牌值 - Laravel API

手摸手教你让Laravel开发Api更得心应手