REST URL请求和方括号('['和']')

问题描述 投票:1回答:2

我想知道方括号([])是REST URL参数的标准。

  1. 我必须通过设置URL中的所有参数来调用Cloud REST WebService。 URL看起来像:https://DNS_SERVEUR/api/2/conversation?filters[website]=1234&data=a0123.... 您可以看到一个参数的名称包含方括号:filters[website]
  2. 使用Firefox或SOAP-UI直接调用URL不会引起任何问题(它们不会在方括号上崩溃)。 但是,使用Oracle融合中间件12.2.1.1.0和专用REST适配器,我有一个错误:参数名称中不允许使用方括号字符。

所以这是我的问题:可以使用方括号字符([])作为标准REST URL参数吗?或者它是Oracle融合中间件的限制?

我在互联网上搜索并没有得到任何明确的答案。使用它的唯一例子(法语)是在PHP中操纵关联数组:http://cyberzoide.developpez.com/php4/url/#LII-E。由于PHP非常宽松,我不认为它有一个可靠的标准参考。

rest parameters character standards
2个回答
1
投票

RFC 3986应该是理解URI的query中允许的内容的首选。

query       = *( pchar / "/" / "?" )
pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"

钩子字符是gen-delims,而不是sub-delims

gen-delims    = ":" / "/" / "?" / "#" / "[" / "]" / "@"

因此,它们应该出现在查询部分中时进行编码。

另见https://stackoverflow.com/a/2375597/54734


0
投票

实际上,有办法管理REST WebService,它会影响URL中允许的字符:

  1. 没有任何描述语言,那么没有规则可以控制你的URI以及HTTP protocole允许的内容。因此,参考VoiceOfUnreason的响应,允许使用[]字符,但解释依赖于服务器应用程序
  2. 使用WADL描述语言(相当于WSDL但适用于REST)。专用RFC(Web Application Description Language)告诉参数的名称必须遵守NMTOKEN模式。如果你看一下NMTOKEN的定义(xsd:NMTOKEN),它就不允许[]。

然而,Oracle融合中间件使用WADL和REST,很自然它不允许REST参数名称中的[]字符。

© www.soinside.com 2019 - 2024. All rights reserved.