无法从 commercetools 中删除产品 api
Unable to delete product from commercetools api
我正在尝试通过 HTTP 请求从 commercetools API 中删除。
以下是我的代码:
$url = 'https://api.sphere.io/test/products/xxxx';
$params = json_encode(array('version'=>1));
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/json'));
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Bearer xxxx'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$res = curl_exec($curl);
$response = json_decode($res);
print_r($response);
来自服务器的响应:
stdClass Object ( [statusCode] => 400 [message] => Missing version number [errors] => Array ( [0] => stdClass Object ( [code] => InvalidOperation [message] => Missing version number ) ) )
我在参数中发送版本号,但仍然出现错误。接下来我可以尝试什么?
我的第一个建议是使用 commercetools PHP SDK。在这里找到 https://github.com/commercetools/commercetools-php-sdk or when using Composer https://packagist.org/packages/commercetools/php-sdk
使用 SDK 删除产品如下所示:
<?php
namespace Commercetools\Core;
use Commercetools\Core\Request\Products\ProductDeleteRequest;
require __DIR__ . '/../vendor/autoload.php';
// create the api client config object
$config = Config::fromArray([
'client_id' => 'XXX',
'client_secret' => 'XXX',
'scope' => 'xxxx'
]);
$request = ProductDeleteRequest::ofIdAndVersion('123456', 1);
$client = Client::ofConfig($config);
$response = $client->execute($request);
$deletedProduct = $request->mapFromResponse($response);
如果您真的想坚持直接与 API 对话,您必须按照此处 http://dev.commercetools.com/http-api-projects-products.html#delete-product-by-id 文档中的说明将版本作为查询参数发送。因此,您示例中的 URL 将是:
$url = 'https://api.sphere.io/test/products/xxxx?version=1';
我正在尝试通过 HTTP 请求从 commercetools API 中删除。
以下是我的代码:
$url = 'https://api.sphere.io/test/products/xxxx';
$params = json_encode(array('version'=>1));
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/json'));
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Bearer xxxx'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$res = curl_exec($curl);
$response = json_decode($res);
print_r($response);
来自服务器的响应:
stdClass Object ( [statusCode] => 400 [message] => Missing version number [errors] => Array ( [0] => stdClass Object ( [code] => InvalidOperation [message] => Missing version number ) ) )
我在参数中发送版本号,但仍然出现错误。接下来我可以尝试什么?
我的第一个建议是使用 commercetools PHP SDK。在这里找到 https://github.com/commercetools/commercetools-php-sdk or when using Composer https://packagist.org/packages/commercetools/php-sdk
使用 SDK 删除产品如下所示:
<?php
namespace Commercetools\Core;
use Commercetools\Core\Request\Products\ProductDeleteRequest;
require __DIR__ . '/../vendor/autoload.php';
// create the api client config object
$config = Config::fromArray([
'client_id' => 'XXX',
'client_secret' => 'XXX',
'scope' => 'xxxx'
]);
$request = ProductDeleteRequest::ofIdAndVersion('123456', 1);
$client = Client::ofConfig($config);
$response = $client->execute($request);
$deletedProduct = $request->mapFromResponse($response);
如果您真的想坚持直接与 API 对话,您必须按照此处 http://dev.commercetools.com/http-api-projects-products.html#delete-product-by-id 文档中的说明将版本作为查询参数发送。因此,您示例中的 URL 将是:
$url = 'https://api.sphere.io/test/products/xxxx?version=1';