越财富

搜索
查看: 55|回复: 4

PHP Fractal – 始终让您的 API 的 JSON 漂亮!

[复制链接]

1

主题

1

帖子

5

积分

新手上路

Rank: 1

积分
5
QQ
发表于 2024-2-11 18:28:57 | 显示全部楼层 |阅读模式
本文由Viraj Khatavkar进行同行评审。感谢所有 SitePoint 的同行评审者使 SitePoint 内容达到最佳状态! 如果您以前构建过 API,我敢打赌您已经习惯了直接转储数据作为响应。如果处理得当,它可能不会有害,但有一些实用的替代方案可以帮助解决这个小问题。 可用的解决方案之一是Fractal。它允许我们在将模型作为响应返回之前为模型创建一个新的转换层。它非常灵活且易于集成到任何应用程序或框架中。 嵌入 PHP 的分形图像 安装 我们将使用 Laravel 5.3 应用程假设每个角色都有一个存储在单独表中的权限列表,序构建一个示例并将 Fractal 包与其集成,因此请继续使用安装程序或通过 Composer 创建一个新的 Laravel 应用程序。 然后,在该文件夹内,我们需要 Fractal 包。  创建变形金刚 我们将为每个模型创建一个变压器。

班级也是如此RoleTransformer。创建控制器 我们的控制器应该在将数据发送回用户之前对其进行转换。我们将在该类上工作,并且暂时索引操作将从数据库中查询所有用户,使用用户列表和转换器创建资源集合,然后执行实际的转换过程。 当然,一次返回所有用户是 伯利兹 WhatsApp 号码列表 没有意义的,我们应该为此实现一个分页器。 分页 Laravel 倾向于让事情变得简单。我们可以这样完成分页: $users = User::paginate(10); 但为了使这项工作与 Fractal 一起工作,我们可能需要在调用分页器之前添加一些代码来转换数据。第一步是对模型中的数据进行分页。接下来,我们像以前一样创建一个资源集合,然后在该集合上设置分页器。 请注意,它添加了额外的分页详细信息字段。您可以在文档中阅读有关分页的更多信息。 包括子资源 现在我们已经熟悉了 Fractal,是时候学习如何在用户请求时将子资源(关系)包含在响应中。

VN30股票-越南投资,越南私募基金,本文由Viraj Khatavkar进行偕行评审。感谢所有 SitePoint 的偕行评审者使 SitePoint 内容到达最佳状态! 如,越南证券,越南美女,(1)

我们可以请求额外的资源包含在响应中,我们的是的,这就是创建变压器所需的全部!它只是以开发人员可以管理的方式转换数据,而不是留给 ORM 或存储库。 我们扩展该类TransformerAbstract并定义transform将通过实例调用的方法User。如下所示。我们的转换器可以自动检测所请求的内容并解析include参数。该$availableIncludes属性告诉变压器我们可能需要在响应中包含一些额外的数据。includeRole如果include查询参数请求用户角色,它将调用该方法。 行负责解析包含查询参数。如果我们请求用户列表,我们应该看到如下内容如果每个用户都有一个角色列表,我们可以将变压器更改为如下所示 当包含子资源时,我们可以使用点符号嵌套关系。我们希望列出用户及其角色和权限。我们可以这样做。include=role.permissions 有时,我们需要默认包含一些必要的关系,例如地址关系。



回复

使用道具 举报

0

主题

16

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2024-3-2 18:43:57 | 显示全部楼层
帮帮顶顶!!
回复

使用道具 举报

0

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2024-3-2 19:09:12 | 显示全部楼层
我ar慧关注了你。
回复

使用道具 举报

0

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2024-3-2 19:29:23 | 显示全部楼层
前排支持下分享
回复

使用道具 举报

0

主题

8

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2024-3-2 19:44:28 | 显示全部楼层
suchonababu941 ,向您致敬.
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

热贴推荐上一条 /5 下一条

联系客服 关注微信 下载APP 返回顶部 返回列表