我正在尝试发布一些数据,然后调用profPostAction来检查令牌,但是 _create函数根本就没有被读取,并且错误请求无效会一直显示,
protected function _create(array $data)
{
$action = $this->getRequest()->getParam('action') . 'PostAction';
if (method_exists($this, $action)) {
Mage::app()->setCurrentStore(1);
header("Content-type: application/json");
die(json_encode($this->$action($data)));
}
$this->_critical('Bad request.', Mage_Api2_Model_Server::HTTP_BAD_REQUEST);
}
//尝试获取提供的令牌和数据以获取客户ID
protected function profPostAction($data)
{
$token = $data['token'];
if (!$token) {
$this->_critical('Token is required.', Mage_Api2_Model_Server::HTTP_BAD_REQUEST);
}
$_token = Mage::getModel('grouponapi/token')->load(mysql_escape_string($token), 'token');
if (!$_token->getId()) {
$this->_critical('Token is not valid!', Mage_Api2_Model_Server::HTTP_FORBIDDEN);
}
$customer_id = $_token->getCustomerId();
$_customer = Mage::getModel('customer/customer')->load($customer_id);
if (!$_customer->getId()) {
$this->_critical('Customer not found!', Mage_Api2_Model_Server::HTTP_NOT_FOUND);
}
}
答案 0 :(得分:0)
确保您已在api2.xml中定义了您尝试创建的实体的属性:
<attributes module="api2">
<entity_id>ID</entity_id>
<field1>Your Field 1</field1>
<field2>Your Field 2</field2>
</attributes>
答案 1 :(得分:0)
这有点晚了但是大部分时间我们都会遇到这种类型的错误,如果在我的情况下我们没有在请求中发送标头我得到了这个错误,因为我没有发送标题 Content-Type Application / json 如果你正在测试你是在休息客户端上的api,那么在表单中手动(原始)编写你的数据(json)。它适用于我的情况。
答案 2 :(得分:0)
在我的情况下,我使用了PUT(_update)方法并传递了空的正文。 在Magento中,我发现更新请求的空主体无效:
case self::ACTION_TYPE_ENTITY . self::OPERATION_UPDATE:
$this->_errorIfMethodNotExist('_update');
$requestData = $this->getRequest()->getBodyParams();
if (empty($requestData)) {
$this->_critical(self::RESOURCE_REQUEST_DATA_INVALID);
}
$filteredData = $this->getFilter()->in($requestData);
if (empty($filteredData)) {
$this->_critical(self::RESOURCE_REQUEST_DATA_INVALID);
}
$this->_update($filteredData);
break;