【发布时间】:2011-10-30 23:53:45
【问题描述】:
在 HTTP URL 路径中使用各种标点符号是不明智的吗?我正在为 API 定义资源 URL。这些资源 URL 必须由各种客户端和中间件访问、存储和传输,因此它们不包含可能导致问题的字符非常重要。
RFC 3986, section 2.2. "Reserved Characters" 将以下字符指定为子分隔符:!$&'()*+,;=
在 HTTP 方案中的 URL 路径中任意使用这些是否非法?
即使根据标准它们是合法的,其中任何一个都很有可能由于不合规的软件而导致现实世界的互操作性问题?
您之前在广泛部署的 API 中是否有任何特定的子分隔符没有问题(这将证明您使用的子分隔符是安全的)?
动机是我们需要分隔没有层次语义的键值对。我们正在考虑这样做:http://doriantaylor.com/policy/http-url-path-parameter-syntax。但是,如果这可能是一个问题,我们将只做http://example.com/key1/value1/key2/value2
谢谢
【问题讨论】:
-
我会使用 Dorian Taylor 的架构,直到出现问题,然后添加
/key/value/key/value作为替代方式,但保持旧架构兼容。
标签: api http url uri urlencode