API
在本节中我们将深入探讨如何扩展 Flarum 的 API。
Flarum 使用 tobscure/json-api 库来输出符合 JSON-API 规范的格式化数据。这涉及序列化程序的使用,该程序是 命名空间下的一个类,能将 Flarum 的数据转换成一个可被公开接受的格式。
可使用 ApiRelationship
事件来添加新的关系模型。Flarum 的底层 Serializer 类提供了两个方便的方法(hasOne
和 hasMany
) ,可构建一个 Tobscure\JsonApi\Relationship
对象,用来处理模型之间的关系。
为使这些关系能被对应文档所链接或包含,你必须把关系与适当的行为加以联系 ―― 阅读下面。
行为
在 Flarum\Api\Action
命名空间下有大量的抽象行为类,可以扩展这些类来方便地实现数据库操作(译注:原文作 CRUD actions, 请参见维基百科)。其中包括 SerializeResourceAction
和 SerializeCollectionAction
类,这两个类将为你进行设置和在序列化程序中传递数据的所有工作。初学者仅需实现 data
方法并以 Eloquent 模型(译注:此为 Laravel 功能,请参见) 或集合(Collection)形式返回即可。
方法接受一个请求对象和几个额外的参数:sort
,include
,link
,limit
和 offset
。这些参数使用行为类中的配置来进行处理,扩展程序可以使用 事件修改这些配置,以允许添加新的关系、新的可排序字段,诸如此类。