fproject/yii2-restx

针对 Yii2 框架的扩展 RESTful

1.1.5 2020-06-08 04:44 UTC

README

扩展 Yii2 框架以支持 F-Project 服务器站点 RESTful

Latest Stable Version Total Downloads Latest Unstable Version Build License

这是什么?

ActiveController

Yii2-restx 提供了类 fproject\rest\ActiveController,它扩展了 yii\rest\ActiveController,并添加了额外的 REST 端点和方法,以便与 F-Project 框架 Flex 客户端一起工作。

默认情况下,支持以下操作

  • index: 模型的列表。支持查询条件、分页和排序。
  • view: 返回一个模型的详细信息
  • create: 创建一个新的模型
  • update: 更新现有的模型
  • delete: 删除现有的模型
  • options: 返回允许的 HTTP 方法
  • save: 保存(更新或插入)一个模型
  • batch-save: 批量保存(更新或插入)模型
  • batch-remove: 批量删除现有的模型

您可以通过重写 actions() 并取消设置相应的操作来禁用这些操作中的某些操作。

要添加新的操作,可以重写 actions() 并追加新的操作类,或者编写新的操作方法。确保您还重写了 verbs() 以正确声明新操作允许的 HTTP 方法。

通常应重写 checkAccess() 来检查当前用户是否有权限对指定的模型执行指定的操作。

UrlRule

Yii2-RESTx 还提供了类 fproject\rest\UrlRule,用于为活动控制器配置 URL 规则以接受扩展路由。

UrlRule 类提供了简化创建 URL 规则以支持 RESTful API 的方法。

UrlRule 的最简单用法是在应用程序配置中声明以下规则

[
    'class' => 'fproject\rest\UrlRule',
    'controller' => 'user',
]

上面的代码将创建一系列支持以下 RESTful API 端点的 URL 规则

  • 'PUT,PATCH users/<id>' => 'user/update': 更新一个用户
  • 'DELETE users/<id>' => 'user/delete': 删除一个用户
  • 'GET users/remove/<id>' => 'user/delete': 删除一个用户
  • 'POST users/batch-remove' => 'user/batch-remove': 批量删除一组用户
  • 'GET,HEAD users/<id>' => 'user/view': 返回一个用户的详细信息/概要/选项
  • 'POST users' => 'user/create': 创建一个新用户
  • 'POST users/save' => 'user/save': 保存一个用户
  • 'POST users/batch-save' => 'user/batch-save': 保存一个用户
  • 'GET,HEAD users' => 'user/index': 返回用户列表/概要/选项
  • 'users/<id>' => 'user/options': 处理用户的所有未处理动词
  • 'users' => 'user/options': 处理用户集合的所有未处理动词

您可以使用 only 和/或 except 配置来禁用上述规则中的某些规则。您可以使用 patterns 完全重新定义自己的规则列表。您可以使用 controller 配置多个控制器 ID 以为所有这些控制器生成规则。例如,以下代码将禁用 delete 规则并为 userpost 控制器生成规则

[
    'class' => 'fproject\rest\UrlRule',
    'controller' => ['user', 'post'],
    'except' => ['delete'],
]

controller 属性是必需的,应表示一个或多个控制器 ID。如果控制器位于模块中,则每个控制器 ID 应以模块 ID 为前缀。在模式中使用的控制器 ID 将自动复数化(例如,user 变为 users,如上述示例所示)。

安装

安装此扩展的最佳方式是通过 composer

composer.phar require fproject/yii2-restx:"*"

用法

  • 在您的Yii配置文件中,使用 fproject\rest\UrlRule 替代 yii\rest\UrlRule
'urlManager' => [
           'enablePrettyUrl' => true,
           'enableStrictParsing' => true,
           'rules' => [
               ['class' => 'fproject\rest\UrlRule', 'controller' => 'user'],
           ],
       ]
  • 让您的控制器继承 fproject\rest\ActiveController 而不是 yii\rest\ActiveController
class UserController extends \fproject\rest\ActiveController{
   public $modelClass = 'app\models\User';
}

示例

请参阅GitHub仓库中的示例项目: https://github.com/fproject/fprj-test-server-yii2

链接