为了账号安全,请及时绑定邮箱和手机立即绑定

如何转义以美元符号 ($) 开头的 odata uri 段

如何转义以美元符号 ($) 开头的 odata uri 段

C#
郎朗坤 2023-09-24 15:50:40
运行此查询:“ https://someurl.com/graph/users/%24myuser%40myorg.org/licenseDetails ?$select=skuId,skuPartNumber”结果是:“请求 URI 无效。由于段“users”引用一个集合,因此这必须是请求 URI 中的最后一个段,或者它后面必须跟有可以绑定到它的函数或操作,否则所有中间段都必须引用单个资源”经过一番尝试后,我设法通过在 myuser 之前添加第二个美元符号 (%24) 来使其工作。这似乎记录很少,即使在这里https://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/abnf/odata-abnf-construction-rules.txt。是否有 ac# 库可以正确转义 odata 的给定文字字符串,而不是每个人不时手动遇到问题?难道不应该针对这些似乎没有记录的特殊情况改进文档吗?
查看完整描述

3 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

OData URL 中的前缀$通常表示您将要使用系统查询选项,例如$filter$select$expand。这可能会导致您的密钥被这样解释。

由于您使用实体键来访问特定实体,然后导航到其导航属性之一,因此您通常可以直接在实体的括号内提供键。当您没有组合键时,这很简单,如下所示:

/users('my-key-value')

然后,您可以按照您之前尝试的相同方式展开特定的导航属性并选择特定的属性(假设实现符合此要求),从而导致

/users('$myuser@myorg.org')/licenseDetails?$select=skuId,skuPartNumber


查看完整回答
反对 回复 2023-09-24
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

您可以使用 /users('$myuser@myorg.org')/licenseDetails 作为替代语法。



查看完整回答
反对 回复 2023-09-24
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

回答逃跑的问题——是的,这是可能的。如果你$在前面添加另一个,它就会逃逸,并且你在操作中获得的值应该是只有一个的值。

/users/$$myuser@myord.org


查看完整回答
反对 回复 2023-09-24
  • 3 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信