如何使用参数?从CMD线(Win 7)到MVC动作进行CURL调用?

时间:2015-09-22 19:31:42

标签: api rest curl yii2 updatemodel

我在Yii 2.0中使用CRUD操作构建REST-full API,我需要有关更新操作的帮助。

在我的Yii 2.0 MVC控制器中,我有以下操作创建和更新:

c_updateSystemUser($id){}

对于创建操作,我可以使用以下命令成功进行 CURL 调用:

public function actionCreate()
{
    ...
}

在此调用之后,我的表中具有上述列值的新行已成功创建。

现在我需要对更新操作进行 CURL 调用:

curl -X POST -d column_one=create_test1 -d column_two=create_test2 http://localhost/MyApp/web/tabletest/create

我为这个命令尝试了很多变化(现在我们在函数中有参数,我不知道如何传递它 - 让我们假设public function actionUpdate($id) { ... } )。这些只是我尝试过的一小部分, 无人工作

$id=2

但在大多数情况下,我收到了错误:

curl -X PUT -d column_two=updated_cmd_2 http://localhost/MyApp/web/tabletest/update/2

curl -X PUT -d "column_two=updated_cmd_2" "http://localhost/MyApp/web/tabletest/update/2"

curl -X PUT -d "id=2&column_two=updated_cmd_2" "http://localhost/MyApp/web/tabletest/update"

*注意:create方法定义为POST方法,update方法定义为PUT方法,因此在这种情况下方法类型不是问题。 我认为更新的CURL调用格式不正确

1 个答案:

答案 0 :(得分:0)

我通过替换控制器中的一个自定义操作来解决问题:

public function beforeAction($action) 
{
    if($this->action->id == 'create'){
        $this->enableCsrfValidation = false;
    }

    return parent::beforeAction($action);
}

成:

public function beforeAction($action) 
{
    if($this->action->id == 'create' || $this->action->id == 'update'){
        $this->enableCsrfValidation = false;
    }

    return parent::beforeAction($action);
}

现在:

curl -X PUT -d column_two=updated_cmd_2 http://localhost/MyApp/web/tabletest/update/2

正在运作。