Я пытаюсь обновить данные объекта в наборе данных mapbox с помощью набора данных api PUT. Я слежу за их Документация но он всегда показывает мне «не найдено» ответное сообщение. Ниже приведен код, который я использую в своей функции laravel. Я успешно получил данные для того же feature_id и dataset_id с помощью API-запроса get, но запрос PUT не работает. так что с учетными данными все в порядке.
$userName = 'account_user_name';
$datasetId = 'dataset_id';
$featureId = 'feature_id';
$accessToken = 'access_token';
$featureBody = json_encode(array(
'id' => '{feature_id}',
'type' => 'Feature',
'geometry' => [
'type' =>'point',
'coordinates' => [ -1.16991, 52.964993]
],
'properties' => [
'id' => 10392,
'name' => 'Sharif & Sons Superstore 123',
'is_featured' => 'No'
]
));$url = "https://api.mapbox.com/datasets/v1/{$userName}/{$datasetId}/features/{$featureId}?access_token=$accessToken";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json',
'Content-Length: ' . strlen($featureBody))
);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS,$featureBody);
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$json = curl_exec($ch);
curl_close($ch);
$arr1 = json_decode($json);
print_r($arr1);
Разве идентификатор объекта json не должен быть переменной $ featureId, а не строкой ‘{featureId}’?
$featureBody = json_encode(array(
'id' => $featureId,
'type' => 'Feature',
'geometry' => [
'type' =>'point',
'coordinates' => [ -1.16991, 52.964993]
],
'properties' => [
'id' => 10392,
'name' => 'Sharif & Sons Superstore 123',
'is_featured' => 'No'
]
));
Других решений пока нет …