futureactivities / craft3-rest-api
为Craft 4提供易于使用的REST API
Requires
- craftcms/cms: ^4.0.0
README
FutureActivities的REST API插件为Craft 3或4的任何安装提供了易于使用的API端点。无需配置,只需启用插件,端点即可立即可用。
您可以可选地排除某些字段和部分以避免暴露数据。
使用v1用于Craft 3,v2+用于Craft 4。
特性
- 获取所有条目、类别、全局、标签和资产。
- 验证用户身份并管理用户。
- 基于Yii 2 RESTful Web Services构建 - 支持扩展、字段、分页。
- 排除特定字段或部分,使其不被包含在响应中。
安装
通过composer安装
composer require futureactivities/craft3-rest-api
用法
有关可用端点的进一步文档可以在以下位置找到
https://craftrest.docs.apiary.io/
示例
获取所有类别
GET /rest/v1/categories
获取所有类别,并扩展相关字段 - 这将返回数据对象而不是ID。
GET /rest/v1/categories?expand=related
获取特定类别
GET /rest/v1/categories/18
获取属于新闻频道的所有条目,并将结果限制为slug和标题
GET /rest/v1/entries?filter[section]=news&fields=slug,title
获取新闻频道中的所有条目,扩展特色图像并应用特定的图像转换
GET /rest/v1/entries?filter[section]=news&expand=featuredImage&transforms[featuredImage]=featuredFull,featuredThumb
设置
从控制面板,可以通过以下设置配置插件
常规
包含禁用
- 禁用条目、类别等是否包含在API结果中。
启用资产
- 启用资产端点
启用标签
- 启用标签端点
字段
配置API结果中可用的自定义字段。
部分
配置API结果中可用的部分。
事件
字段事件
此插件仅支持有限数量的字段类型在API响应中,对于其他字段类型和自定义字段类型,您可以使用以下事件自行处理响应
Event::on(\futureactivities\rest\services\Fields::class, \futureactivities\rest\services\Fields::EVENT_PROCESS_FIELD, function(Event $event) {
$field = $event->field;
if (is_a($field, 'namespace\plugin\CustomFieldType'))
$event->data = [
'key' => 'value'
];
}
});
额外字段事件
有时您可能希望将额外数据包含在响应中,以下事件将允许您将您自己的字段添加到元素中。
Event::on(\futureactivities\rest\models\Element::class, \futureactivities\rest\models\Element::EVENT_EXTRA_FIELDS, function(Event $event) {
$model = $event->model;
if (is_a($model, 'craft\elements\Entry') && $model->section->handle == 'news') {
$event->fields = [
'myCustomField' => 'Hello'
];
}
});
身份验证
如果您使用此插件的用户身份验证功能,则可能需要配置您的服务器以确保授权头传递给Craft。对于Apache,这是通过向您的conf文件添加以下内容来完成的
RewriteEngine On
RewriteCond %{HTTP:Authorization} .+
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Cron
过期令牌
默认情况下,用户身份验证令牌永远不会过期。要使令牌过期,设置一个运行以下命令的cron作业
./craft rest/token/expire <seconds>
<seconds>
是可选的。默认为3600秒(1小时)。
变更日志
1.2
- 修复了损坏的CMS设置布局
- 修复了令牌验证中的错误
- 添加了
rest/v2/me
端点,该端点返回一个更有用的用户对象,并且也支持字段扩展。
1.1
-
资产图像转换现在期望端点上的
transforms
而不是imageTransform
。现在允许逗号分隔的转换键值,并将返回包含原始图像URL的转换数组。 -
添加了对在条目和类别请求中指定图像转换的支持,格式如下
transforms[field] = 'transformKey,anotherKey'
transforms[parent][child] = 'transformKey'
路线图
以下功能计划用于未来的版本
- API身份验证 - 仅允许已验证用户使用API。
- 限制字段/部分等的使用,仅限于某些用户角色。