При попытке создать документ с помощью API REST появляется следующая ошибка:
The input content is invalid because the required properties - 'id; ' - are missing
В различных SDK есть необязательный параметр для включения disableAutomaticIdGeneration
, который при значении true
отклонит запрос с этой ошибкой, если идентификатор не указан. Я делаю довольно простой запрос REST, поэтому я не добавляю этот параметр сам (и я даже не знаю, какой заголовок - предположительно заголовок) я бы добавил, потому что документация по API REST не охватывает это).
Единственное, что следует отметить, это то, что в коллекции есть определенный ключ раздела. Я не могу найти никакой документации, в которой говорится, что требуется идентификатор , если определен ключ раздела, но, похоже, это так.
Если кто-то не может ответить на вопрос, почему это происходит / может происходить, я собираюсь рассмотреть мой ответ "это должно быть определено, если ключ раздела определен" the ответ в конце концов.
Запрос ниже (это не пустой HTTP, а вот содержимое):
{
"headers": {
"content-type": "application/json",
"x-ms-version": "2017-02-22",
"x-ms-date": "Mon, 25 Mar 2019 17:57:03 GMT"
},
"body": {
"data": "myData",
// "id": "some_id" //I don't want to do this because I want Cosmos to auto-generate this like when I create a document in the Portal!
},
"method": "post",
"url": "https://my-database-server.documents.azure.com/dbs/MyDatabase/colls/MyCollection/docs"
}
Еще несколько вопросов, чтобы распутать ...
Документация Create * гласит, что id
является Обязательным , поэтому, возможно, Портал фактически создает его на стороне браузера и затем включает его в запрос под капотом, но если это так, почему в SDK существует опция disableAutomaticIdGeneration
?
Также в той же документации говорится (выделение мое):
Это уникальный идентификатор, который идентифицирует документ, то есть никакие два документа не должны иметь один и тот же идентификатор. Идентификатор не должен превышать 255 символов. Поле идентификатора автоматически добавляется при создании документа без указания значения идентификатора . Однако вы всегда можете обновить значение идентификатора, назначив ему пользовательское значение в теле запроса.
По жирному сечению кажется, что требуется ключ id
, но, может быть, я могу пропустить null
или пустую строку? Но я попробовал оба из них и получил ошибки оба раза (один сказал, что null
не разрешен, а другой состоял в том, что строка не может быть пустой).