【问题标题】:yii2 creating custom based Rest APIyii2 创建基于自定义的 Rest API
【发布时间】:2015-02-09 21:08:32
【问题描述】:

我正在为一些计算创建自己的基于自定义的操作,这些计算必须由 json 中的 restful api 发送。问题是当我创建从 activecontroller 继承的控制器时,然后对于索引操作它会询问模型类。

我必须使用我自己的基于自定义计算的索引操作,它不需要存储在数据库中,所以我实际上根本不需要创建模型类。这是我第一次使用 activecontroller,所以我不知道如何让索引页根据我的需要来运行。

我可以使用我想要的任何名称创建我自己的基于自定义的操作,例如

 public function actionFast()
    {
        echo "XXX";
    }

在config/web.php里面

'urlManager' => [
            'showScriptName' => false,
            'enablePrettyUrl' => true
            ,
            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' => ['Apprest/Fast'], 'extraPatterns' => ['GET dast' => 'fast']],
            ],
        ],

但我需要使用索引操作来进行各种计算,而不是我的自定义“快速”操作。有没有办法做到这一点?

其次,我想将此 url 限制为 GET only url,有没有办法让用户发送到 404 错误,以防他尝试在此页面上发布?

【问题讨论】:

    标签: php rest yii2 restful-url


    【解决方案1】:

    如果您没有模型,您可以直接从 yii\rest\Controller 扩展并添加您需要的操作

    这里你可以看到例子:

    namespace api\controllers;
    use yii\rest\Controller;
    class MyController extends Controller
    {
    public function actionFast()
        {
            echo "XXX";
        }
    }
    

    【讨论】:

    • 所以这意味着我应该创建所有错误列表,包括 404 等,而且我必须手动创建标题信息,因为我要发送的文档应该是 json 格式?请详细说明您的答案
    • yii\rest\Controller中实现的所有与rest api相关的东西请查看源代码,你会看到。所以如果你要使用这个控制器,你只需要添加你的动作。如果你查看 activecontroller 的源代码,你会看到这个控制器是从 yii\rest\Controller 扩展而来的。它所做的一切,只需添加用于使用 activerecord 的操作,如索引、更新......所以如果你想创建没有活动记录的 rest api,你只需要从 rest 控制器扩展并添加你的操作
    • 这里你可以看到例子:` namespace api\controllers;使用 yii\rest\Controller;类 MyController 扩展控制器 { public function actionFast() { echo "XXX"; } }`
    • 没错,我确实遵循并制作了自己的休息控制器,但即使我在控制器中手动将其设置为 application/json,页眉 mime 类型仍显示 html。
    猜你喜欢
    • 1970-01-01
    • 2019-01-19
    • 2011-09-19
    • 1970-01-01
    • 2020-05-23
    • 2023-04-04
    • 2016-04-27
    • 2019-01-03
    • 1970-01-01
    相关资源
    最近更新 更多