Azure easy tables — PUT не работает

Я использую 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. Конечно, предмет находится в моей таблице).

Я действительно застрял. У кого-нибудь есть идея, почему она не работает?

1

Решение

Спасибо за ваш ответ Гэри Лю и за ссылку. Фактически, метод 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) {}
1

Другие решения

Кажется, вы реализуете табличные операции в 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.

0

По вопросам рекламы [email protected]