Yii2:ActiveController 中的 REST API 操作

2024-05-06

在文档指南中有示例:

    namespace app\controllers;

    use yii\rest\ActiveController;

    class UserController extends ActiveController
    {
        public $modelClass = 'app\models\User';
}

但我不明白如何使用动作。

例如:

  • DataBase具有多对多关系的表(通过连接表)。

  • 组件使用模型并根据传输的数据从多个表中形成共同响应。可以返回一个数组,或者一个对象数组。

当在命令控制器中使用它时,它就像:

    class LastTweetsController extends Controller
    {
        /**
         * @param int $count
         *
         * @throws yii\base\InvalidConfigException
         */
        public function actionIndex($count = 10)
        {
            /** @var TweetLastfinder $tweetLastFinder */
            $tweetLastFinder = Yii::$app->get('tweetlastfinder');

            /**
             * @var TweetShow $tweetShow
             */
            $tweetShow = Yii::$app->get('tweetshow');

            // For show tweets into terminal:
$tweetShow->showLastTweetsJSON($tweetLastFinder->findLastTweets($count));
        }
    }

但是我如何在 ActiveController 中进行相同的操作(传输参数 $count 并以 JSON 形式返回结果)?


更改 API 的默认操作,例如 - 创建、更新、查看、索引、删除 在控制器中写入以下代码

namespace app\controllers;
use yii\rest\ActiveController;

class UserController extends ActiveController
{
    public $modelClass = 'app\models\User';

   /* Declare actions supported by APIs (Added in api/modules/v1/components/controller.php too) */
    public function actions(){
        $actions = parent::actions();
        unset($actions['create']);
        unset($actions['update']);
        unset($actions['delete']);
        unset($actions['view']);
        unset($actions['index']);
        return $actions;
    }

    /* Declare methods supported by APIs */
    protected function verbs(){
        return [
            'create' => ['POST'],
            'update' => ['PUT', 'PATCH','POST'],
            'delete' => ['DELETE'],
            'view' => ['GET'],
            'index'=>['GET'],
        ];
    }

    public function actionIndex($count = 10){
        /** @var TweetLastfinder $tweetLastFinder */
        $tweetLastFinder = Yii::$app->get('tweetlastfinder');

        /**
         * @var TweetShow $tweetShow
         */
        $tweetShow = Yii::$app->get('tweetshow');

        // This will return in JSON:
        return $tweetLastFinder->findLastTweets($count);
    }
}

在 API 主配置文件中 -

    'components' => [  
        ....
        'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,
            'rules' => [
                 [
                        'class' => 'yii\rest\UrlRule', 
                        'controller' => 'v1/user',
                        'tokens' => [
                            '{id}' => '<id:\\w+>',
                            '{count}' => '<count:\\w+>', 
                        ],
                        //'pluralize' => false,
                        'extraPatterns' => [    
                            'POST' => 'create', // 'xxxxx' refers to 'actionXxxxx'
                            'PUT {id}' => 'update',
                            'PATCH {id}' => 'update',
                            'DELETE {id}' => 'delete',
                            'GET {id}' => 'view',
                            'GET {count}' => 'index',
                        ],

                    ],
            ]
        ],
        ....
    ]

在您的情况下,您希望在索引操作参数中包含 $count ,因此在 url 管理器中您需要定义“count”令牌,就像“id”一样

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Yii2:ActiveController 中的 REST API 操作 的相关文章

随机推荐

  • Jasmine的spyOn()是否允许执行spies on函数?

    茉莉花有吗spyOn 方法允许执行监视函数 或者确实是这样 当 即将 调用监视方法时拦截调用 并返回true PS 谁能给我解释一下spyOn 的内部运作 Spy 间谍可以伪装成一个函数或一个对象 您可以在编写单元测试代码时使用它们来检查函
  • 'NSDate' 没有可见的 @interface 声明选择器 'initWithString:' [重复]

    这个问题在这里已经有答案了 可能的重复 NSDate initWithString https stackoverflow com questions 7770257 nsdate initwithstring 我写了下面一行代码 NSDa
  • 翻转旋转和图像

    我正在用 Java 编写一个平台游戏 并且正在手动编码玩家动画 我分别为每个肢体设置动画 改变位置和旋转 当玩家面向右时 这工作得很好 但是当玩家面向左时 我不知道如何处理旋转 以使它们在玩家向左转时看起来相同 每个身体部位的位置都是相对于
  • 有没有办法使用 Mayavi 填充陀螺仪表面的一侧?

    我正在使用 Mayavi 绘制陀螺仪的等值面 我的问题是我需要通过填充两个生成区域的一侧来获得更坚固的结构 在下面的图片中 您可以看到我生成的等值面的外观以及填充一侧后的外观 我生成的等值面 它应该是什么样子 等值面可以通过以下方程生成 U
  • Swift 中的 NSCollectionView 选择处理

    使用 Swift 学习 我一整天都在做这件事 但进展甚微 需要知道何时选择 NSCollectionView 中的项目 最终目标是让项目突出显示 并能够使用删除键将其从集合中删除 我的 NSCollectionView 绑定到 ArrayC
  • 在 eclipse indigo 中找不到 Window builder pro

    我读到 Eclipse Indigo 安装了 Window Builder Pro 插件 但我不知道它在哪里 文件 新建 项目没有给我选择 Window Builder Pro 的选项 如何找到它 您需要将此更新站点添加到 Eclipse
  • Font Awesome 4.0.0 缺少图标

    是我一个人的问题 还是 FontAwesome 3 x x 中实际上有 FontAwesome 4 0 0 中缺少的图标 如果是这样 这肯定会让 FontAwesome 对我来说不再那么棒 例如 我似乎找不到相当于icon remove 没
  • java格式化表格输出

    所以我正在尝试格式化我的输出 System out println Menu nItem tItem t tPrice tQuantity for int i 0 i
  • jQuery 单击事件更改 php 会话变量

    对此最好的方法是什么 因为 正如我发现的 只有在尝试过之后才完全有意义 p 你不能在 javascript 条件下设置 PHP 变量 杜尔赫 我能想到的唯一解决方案是对一个处理会话变量的小型 PHP 文件进行 AJAX 调用 elm cli
  • 给定字符串的所有可能排列?

    我该如何在 Ruby 中做到这一点 p abc all possible permutations 将返回 abc acb bca bac cba cab Edit 感谢雅库布 汉普尔 class String def all possib
  • 仅以 int 形式显示和保存小时数

    如何仅显示小时并使用 int 变量 我的意思是打印时间 例如 20 30 44 PM 我只想存储小时 即 int 变量中的 20 小时 怎么做 有谁知道的话可以告诉我密码吗 谢谢 尝试使用日历get http docs oracle com
  • 无法让 Rails Server 与 MySQL 一起使用

    我正在尝试让我的 Rails 应用程序与 MySQL 一起使用 而不是默认的 SQLite 我创建了一个新项目 强制使用 MySQL 它似乎工作正常 它在 Gem 文件中添加了 gem 条目 如下所示 source https rubyge
  • StateObject 作为 init() 中另一个对象的参数

    我试图将 StateObject 用户传递给authenticationHelper 但我不能 因为 IDE 说 在初始化所有存储的属性之前使用 self 即使它是在结构体的开头初始化的 我考虑过将 user 的初始化移至 init 但同样
  • Windows批处理编程中的用户输入操作

    我想以 ddmmyyyy 格式接受用户的输入 当用户以这种格式输入日期时 文件将移动到相应的文件夹 我尝试了以下代码但失败了 SET p str 输入文件夹的名称 例如30062011 移动 C Documents and Settings
  • 如何从图书馆创建承诺

    我对此感到困惑 因为到目前为止我发现的每个教程都假设我可以编辑库代码 或者库只有回调或回调作为最后一个参数 我正在使用的库的每个功能都设置为function successCallBack result FailCallBack error
  • java中使用awt.Toolkit和Clipboard是否可以知道剪贴板中复制的内容是否是mp3文件

    我正在尝试编写一个运行于背景 and monitors复制 a 的复制操作 mp3 file or a 文件夹包含 a mp3 file Clipboard cb Toolkit getDefaultToolkit getSystemCli
  • 返回值必须是 ?Illuminate\\Database\\Query\\Builder, App\\Models\\ModelName 返回的类型

    我试图得到以下回应 user id 1 first name john last name doe email email protected cdn cgi l email protection phone number 12345678
  • 随机梯度下降可以与 TensorFlow 一起使用吗?

    我设计了一个全连接 MLP 具有 2 个隐藏层和 1 个输出层 如果我使用批量或小批量梯度下降 我会得到一个很好的学习曲线 But a straight line while performing Stochastic Gradient D
  • asp.net core 3.0 web api request.body 和 [frombody] 冲突 [已关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我需要让身体通过request bodyfrombody后 但测试了2天还没有找到解决方案 我已经添加Request EnableBuffe
  • Yii2:ActiveController 中的 REST API 操作

    在文档指南中有示例 namespace app controllers use yii rest ActiveController class UserController extends ActiveController public m