我在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调用格式不正确 。
答案 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
正在运作。