使用 InsertOrMerge 的 ResourceNotFound:Azure Table 存储 REST API

ResourceNotFound using InsertOrMerge : Azure Table Storage REST API

对于 insertOrMerge 我知道我们应该:

  • If-Match, excluded from the header
  • Send merge request

我授权在 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

都不是
String _urlString = Uri.encodeFull('$endpoint($id)') + '?$sas';

这完成了工作,问题是 url

中有未编码的字符
  • encoding sas修改它;所以它失败了 AuthenticationFailed
  • url 的前半部分(作为一个整体)没有使用 encodeFull;因 InvalidInput
  • 而失败