REST URL 请求和方括号('[' 和 ']')
REST URL request and square brackets ('[' and ']')
我想知道方括号([
和 ]
)在 REST URL 参数中是否是标准的。
我必须通过设置 URL 中的所有参数来调用 Cloud REST WebService。 URL 看起来像:https://DNS_SERVEUR/api/2/conversation?filters[website]=1234&data=a0123....
可以看到其中一个参数的名称中包含方括号:filters[website]
直接使用 Firefox 或 SOAP-UI 调用 URL 不会引发任何问题(它们不会在方括号中崩溃)。
但是,使用 Oracle 融合中间件 12.2.1.1.0 和专用 REST 适配器时,出现错误:参数名称中不允许使用方括号字符。
所以这是我的问题:方括号字符([
和 ]
)可以用作标准 REST URL 参数吗?还是 Oracle 融合中间件的限制?
我上网查了一下,没有得到明确的答案。使用它的唯一示例(法语)是在 PHP 中操作关联数组:http://cyberzoide.developpez.com/php4/url/#LII-E。由于 PHP 非常宽松,我不认为它具有可靠的标准参考。
RFC 3986 应该是 go-to 以了解 URI query 中允许的内容。
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
挂钩字符是 gen-delims
,而不是 sub-delims
gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
因此出现在查询部分时应该对其进行编码。
另见
事实上,有一种方法可以管理 REST WebService,它会影响 URL 中允许的字符:
- 没有任何描述语言,那么除了 HTTP 协议允许的之外,没有任何规则可以控制您的 URI。因此,参考 VoiceOfUnreason 的响应,[] 字符是允许的,但解释取决于服务器应用程序
- 使用 WADL 描述语言(相当于 WSDL,但用于 REST)。专用 RFC (Web Application Description Language) tells parameter's name must respect NMTOKEN schema. And if you look at NMTOKEN definition (xsd:NMTOKEN),它不允许 [].
然而 Oracle 融合中间件将 WADL 与 REST 一起使用,它自然不允许在 REST 参数名称中使用 [] 字符。
我想知道方括号([
和 ]
)在 REST URL 参数中是否是标准的。
我必须通过设置 URL 中的所有参数来调用 Cloud REST WebService。 URL 看起来像:
https://DNS_SERVEUR/api/2/conversation?filters[website]=1234&data=a0123....
可以看到其中一个参数的名称中包含方括号:
filters[website]
直接使用 Firefox 或 SOAP-UI 调用 URL 不会引发任何问题(它们不会在方括号中崩溃)。
但是,使用 Oracle 融合中间件 12.2.1.1.0 和专用 REST 适配器时,出现错误:参数名称中不允许使用方括号字符。
所以这是我的问题:方括号字符([
和 ]
)可以用作标准 REST URL 参数吗?还是 Oracle 融合中间件的限制?
我上网查了一下,没有得到明确的答案。使用它的唯一示例(法语)是在 PHP 中操作关联数组:http://cyberzoide.developpez.com/php4/url/#LII-E。由于 PHP 非常宽松,我不认为它具有可靠的标准参考。
RFC 3986 应该是 go-to 以了解 URI query 中允许的内容。
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
挂钩字符是 gen-delims
,而不是 sub-delims
gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
因此出现在查询部分时应该对其进行编码。
另见
事实上,有一种方法可以管理 REST WebService,它会影响 URL 中允许的字符:
- 没有任何描述语言,那么除了 HTTP 协议允许的之外,没有任何规则可以控制您的 URI。因此,参考 VoiceOfUnreason 的响应,[] 字符是允许的,但解释取决于服务器应用程序
- 使用 WADL 描述语言(相当于 WSDL,但用于 REST)。专用 RFC (Web Application Description Language) tells parameter's name must respect NMTOKEN schema. And if you look at NMTOKEN definition (xsd:NMTOKEN),它不允许 [].
然而 Oracle 融合中间件将 WADL 与 REST 一起使用,它自然不允许在 REST 参数名称中使用 [] 字符。