Я использую Rest Api для публикации, получения и размещения в моих простых таблицах с использованием PHP. Пока POST и GET работают, я не могу заставить PUT работать.
Вот мой код:
$urlAzure = 'https://<account name>.azurewebsites.net/tables/<tableName>(PartitionKey="<key>",RowKey="<row key>")';
$dataAzure = array (
'PartitionKey' => <key>,
'Owner' => $_SESSION['username'],
'RowKey' => '<row key>',
'mediaUrl' => ''
);$optionsAzure = array(
'http' => array(
'method' => 'PUT',
'content' => json_encode( $dataAzure ),
'header'=> "Content-Type: application/json\r\n" .
"Accept: application/json\r\n")
);
$contextAzure = stream_context_create($optionsAzure);
$resultAzure= file_get_contents($urlAzure, false, $contextAzure);
if ($resultAzure === FALSE) {}
К сожалению, это не работает. После целого дня испытаний мне удалось получить следующие ошибки:
Ошибка HTTP 400. Запрос плохо сформирован.
а иногда: элемент не существует
(это зависит от того, сделаю ли я пробел или нет в URL. Конечно, предмет находится в моей таблице).
Я действительно застрял. У кого-нибудь есть идея, почему она не работает?
Спасибо за ваш ответ Гэри Лю и за ссылку. Фактически, метод PUT в этом случае выполняется с использованием PATCH. Итак, благодаря вам, вот что я получил 🙂
$urlAzure = 'https://<myAccountName>.azurewebsites.net/tables/<myTable>/<id>;
$dataAzure = array (
<my array to 'PATCH'>
);
$optionsAzure = array(
'http' => array(
'method' => 'PATCH',
'content' => json_encode( $dataAzure ),
'header'=> "Content-Type: application/json\r\n" .
"Accept: application/json\r\n")
);
$contextAzure = stream_context_create($optionsAzure);
$resultAzure= file_get_contents($urlAzure, false, $contextAzure);
if ($resultAzure === FALSE) {}
Кажется, вы реализуете табличные операции в Easy Tables в мобильных приложениях. Если у меня возникнет какое-либо недопонимание, пожалуйста, дайте мне знать.
В качестве Node.js Server SDK azure-mobile-apps предусмотрены механизмы для представления таблиц данных, хранящихся в базе данных SQL Azure, как WebAPI, но не PUT
метод. Вы можете обратиться к https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-node-backend-how-to-use-server-sdk/#TableOperations для получения дополнительной информации.
Если вы настаиваете на реализации с PUT
метод, вы можете создать собственный API, используя Easy API.