您好我目前正在尝试使用 POSTMAN 来测试基于这篇文章 http://www.yiiframework.com/wiki/175/how-to-create-a-rest-api/的早期 API
尝试通过 POST 以 php url 样式提交变量甚至发送对象时出现错误。来自 API 的响应返回 200,它会在数据库中创建一个新条目,但不幸的是,它不会从 post 变量或 jason 对象中获取任何信息,它只会出现 null。现在看来,该代码只是查看 $_POST 变量并尝试将它们与模型变量匹配,如果是这样,它应该更新它保存它,但是当我尝试通过 POSTMAN 中的 url 参数发送甚至更改内容类型时json 并发送原始 json 对象我似乎没有运气。
此外,我真的只需要它来解码一个 jason 对象而不是发布参数,所以也许这就是我将开始删除 $post 循环并开始检索 JSON 对象的地方。谢谢你的帮助!
public function actionCreate()
{
switch($_GET['model'])
{
// Get an instance of the respective model
case 'event':
$model = new Event;
break;
case 'media':
$model = new Media;
break;
case 'comment':
$model = new Comment;
break;
default:
$this->_sendResponse(501,
sprintf('Mode <b>create</b> is not implemented for model <b>%s</b>',
$_GET['model']) );
Yii::app()->end();
}
// Try to assign POST values to attributes
foreach($_POST as $var=>$value) {
// Does the model have this attribute? If not raise an error
if($model->hasAttribute($var))
$model->$var = $value;
else
$this->_sendResponse(500,
sprintf('Parameter <b>%s</b> is not allowed for model <b>%s</b>', $var,
$_GET['model']) );
}
// Try to save the model
if($model->save())
$this->_sendResponse(200, CJSON::encode($model));
else {
// Errors occurred
$msg = "<h1>Error</h1>";
$msg .= sprintf("Couldn't create model <b>%s</b>", $_GET['model']);
$msg .= "<ul>";
foreach($model->errors as $attribute=>$attr_errors) {
$msg .= "<li>Attribute: $attribute</li>";
$msg .= "<ul>";
foreach($attr_errors as $attr_error)
$msg .= "<li>$attr_error</li>";
$msg .= "</ul>";
}
$msg .= "</ul>";
$this->_sendResponse(500, $msg );
}
}