如何在 Lumen 项目中使用 JSON API 资源?

Posted

技术标签:

【中文标题】如何在 Lumen 项目中使用 JSON API 资源?【英文标题】:How can I use JSON API Resource in a Lumen project? 【发布时间】:2019-01-22 22:12:25 【问题描述】:

在 Laravel 中,它可以像这里描述的那样简单地完成:https://laravel.com/docs/5.6/eloquent-resources。

有人说,API 资源不适用于 Lumen。但是,仅仅为了这个问题,我想严格地知道,是否有办法在 Lumen 项目中添加 Laravel JSON API 资源(新创建的 Lumen 项目中缺少包 use Illuminate\Http\Resources\Json\JsonResource;)。

【问题讨论】:

【参考方案1】:

API 资源以 lumen 形式提供,文件位于:vendor\illuminate\http\Resources。 缺少的是生成它们的工匠命令。所以只需手动创建文件,例如: app\Http\Resources\UserResource.php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class UserResource extends JsonResource

    public function toArray($request)
    
        return [
            'name' => $this->name,
            'email' => $this->email,
        ];
    

我不知道谁说,API 资源不适用于 Lumen,但事实并非如此。

【讨论】:

对于 Lumen 5.8,如果您添加软件包 Flipbox/lumen-generator:composer require flipbox/lumen-generator,您将能够使用 artisan 命令 artisan make:resource myresource lumen docs里面有资源,谢谢回复【参考方案2】:

升级你的 laravel 到 6.xx 运行

作曲家安装

那么只有你在

下看到资源类

vendor/illuminate/http/ 目录

【讨论】:

【参考方案3】:

如果您想以 json 格式发送响应,请在您的控制器中使用 返回响应($res,200); 这里 200 是状态码

【讨论】:

Resources 用于在控制器中不使用 View 层。

以上是关于如何在 Lumen 项目中使用 JSON API 资源?的主要内容,如果未能解决你的问题,请参考以下文章

lumen 6:如何在 lumen 上重构响应分页的数据?

在共享主机中的 Lumen 项目上找不到类异常

使用 Lumen + Guzzle 的 API 调用提供错误数组到字符串的转换

Lumen 5.7 JSON 响应限制

如何在 lumen 5.8.* 中使用 dingo 修复实现 jwt?目标 [Dingo\Api\Contract\Routing\Adapter] 不可实例化

在 Lumen 7 中验证时如何返回自定义 JSON 数组名称和内部元素?