Yii2通过web和rest api访问端点

时间:2017-09-04 06:52:57

标签: yii2 yii-rest

客户已要求通过Web界面以及REST API提供完全相同的端点。

只有在登录时才能使用Web浏览器显示相同的端点。通过REST API访问时,必须提交有效的访问令牌。

此特定端点的规则定义如下:

[
    'class' => 'yii\rest\UrlRule',
    'controller' => 'site',
    'pluralize' => false,
    'extraPatterns' => [
        'POST upload-raw-data' => 'uploadRawData'
    ],
]

现在,当我尝试访问此端点时,我得到了以下结果:

  • 浏览器:没问题
  • 邮差/邮寄:404错误
  • Postman / GET:没问题
  • 在启用enableStrictParsing的情况下尝试相同时,我发现了404错误。

    如果我需要提供代码的其他部分,我很乐意提供它们。

    1 个答案:

    答案 0 :(得分:0)

    我想我找到了解决问题的方法。问题似乎是CSRF验证。

    通过在beforeAction()中禁用此特定操作,POST调用将按预期运行。

    public function beforeAction($action) {
        if ($action->id == 'upload-raw-data')
            Yii::$app->controller->enableCsrfValidation = false;
    
        return parent::beforeAction($action);
    }
    

    来源:https://gist.github.com/guerreiro/9e9cb3154b9047f5d2a0