ResourceNotFound 使用 InsertOrMerge:Azure 表存储 REST API

Posted

技术标签:

【中文标题】ResourceNotFound 使用 InsertOrMerge:Azure 表存储 REST API【英文标题】:ResourceNotFound using InsertOrMerge : Azure Table Storage REST API 【发布时间】:2022-01-06 21:11:25 【问题描述】:

对于 insertOrMerge,我知道我们应该:

If-Match,从标头中排除 发送合并请求

我正在授权在 url 中使用 SAS

飞镖代码:

String _urlString = '$endpoint($id)?$sas';

var url = Uri.parse(_urlString);

var request = http.Request('MERGE', url);
request.header = 
    "Accept": "application/json;odata=nometadata",
    "x-ms-date": DateTime.now().toUtc().toString(),
    "x-ms-version": "2020-10-02",
    "content-type": "application/json; charset=utf-8",
  ;
request.body = 
    PartitionKey: 'new key',
    RowKey: 'mykey'
;

request.send();

我错过了什么? 知道合并和更新对我来说很好,但对于 insertOrMerge 和 insertOrUpdate 都不是

【问题讨论】:

我这里还有一个注意事项:将“x-ms-version”设置为最新版本时:2020-12-06 它抱怨无法解析标题!但是所有以前的版本都没有问题??!! 你可以试试下面的 request.body = "PartitionKey": "new key", "RowKey": "mykey" ; 我看不懂你要说什么!! 正文中的键值对应该用引号引起来 非常感谢!我听从了你的建议,但并没有解决问题。而是它让我找到了它,请参阅我的回答。它适用于单引号和双引号。 【参考方案1】:
String _urlString = Uri.encodeFull('$endpoint($id)') + '?$sas';

这完成了工作,问题是 url 中有未编码的字符

编码 sas 修改它;所以它失败了 AuthenticationFailed 不在 URL 的前半部分(作为一个整体)使用 encodeFull;因输入无效而失败

【讨论】:

以上是关于ResourceNotFound 使用 InsertOrMerge:Azure 表存储 REST API的主要内容,如果未能解决你的问题,请参考以下文章

在请求邮箱中的邮件时,ResourceNotFound

ResourceNotFound: rgbd_launch

为 Azure 存储帐户创建专用终结点连接时出现 ResourceNotFound 错误

SQL SERVER 分页查询 和 Inser 添加并返回Id

来自 PUT 的 Azure Blob 存储文档中的“404 资源未找到”

Attribute "resultType" must be declared for element type "update" or "inser