当我尝试对DocumentDB集合执行DELETE动词时,我总是得到401。查询/插入/更新的POST工作正常,所以我确信我的计算授权令牌的代码是正确的。然而,我不确定我应该为资源ID和资源类型传递什么。
payLoad := LowerCase(Verb) + #10+
LowerCase(resourceType) + #10+
LowerCase(resourceId) + #10+
LowerCase(utc_date) + #10 +
'' + #10; //instead of the "date" header
对于POST(有效),我使用
"docs" and "dbs/mydb/mycol/licenses"
对于DELETE,我使用“_self”属性的值作为要删除的doc的url。我尝试过任何我能想到的资源类型和资源ID的组合:
docs dbs/icUoAA==/colls/icUoAKizCgA=/docs
docs dbs/icUoAA==/colls/icUoAKizCgA=/docs/icUoAKizCgADAAAAAAAAAA==
docs dbs/icUoAA==/colls/icUoAKizCgA=/docs/icUoAKizCgADAAAAAAAAAA==/
docs/icUoAKizCgADAAAAAAAAAA== dbs/icUoAA==/colls/icUoAKizCgA=/docs
docs/icUoAKizCgADAAAAAAAAAA== dbs/icUoAA==/colls/icUoAKizCgA=/docs/icUoAKizCgADAAAAAAAAAA==
etc.
然而,DELETE总是因401而失败。我需要使用不同的东西吗?
谢谢!
答案 0 :(得分:2)
您可以向DocumentDB提出两种请求。一个基于您定义的“id”属性,一个基于内部资源ID(“_rid”)。当您使用“id”时,您需要使用整个链接来生成授权令牌,因此对于删除它看起来像
delete
docs
dbs/mydb/colls/mycol/docs/cc0d4caabc714aac976c9d0a2e9243ed
sun, 21 aug 2016 20:00:00
//newline
如果您正在使用内部资源ID,那么您只需传入您要删除的文档的“_rid”,例如
delete
docs
icuoakizcgadaaaaaaaaaa== //lowercase
sun, 21 aug 2016 20:00:00
//newline
可能有助于调试这些问题的一件事是查看随401返回的响应正文。它应该包含一条错误消息,告诉您服务器所期望的有效负载。