使用 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
而失败
对于 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 而失败