Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Api HTTP URL路径中分隔符的最佳实践_Api_Http_Url_Uri_Urlencode - Fatal编程技术网

Api HTTP URL路径中分隔符的最佳实践

Api HTTP URL路径中分隔符的最佳实践,api,http,url,uri,urlencode,Api,Http,Url,Uri,Urlencode,在HTTP URL路径中使用各种标点符号是否不明智?我正在为API定义资源URL。这些资源URL必须由各种各样的客户端和中间件访问、存储和传输,因此它们不包含可能导致问题的字符非常重要 将以下字符指定为子项:!$&'()*+,;= 在HTTP方案的URL路径中任意使用这些内容是否非法 即使它们根据标准是合法的,它们中的任何一个是否有很高的机会因不符合标准的软件而导致现实世界的互操作性问题 是否有您以前在广泛部署的API中使用过的没有问题的特定子delims(这将提供您使用的子delims是安全的

在HTTP URL路径中使用各种标点符号是否不明智?我正在为API定义资源URL。这些资源URL必须由各种各样的客户端和中间件访问、存储和传输,因此它们不包含可能导致问题的字符非常重要

将以下字符指定为子项:!$&'()*+,;=

在HTTP方案的URL路径中任意使用这些内容是否非法

即使它们根据标准是合法的,它们中的任何一个是否有很高的机会因不符合标准的软件而导致现实世界的互操作性问题

是否有您以前在广泛部署的API中使用过的没有问题的特定子delims(这将提供您使用的子delims是安全的证据)

其动机是我们需要划分没有层次语义的键值对。我们正在考虑这样做:。然而,如果这可能是一个问题,我们将只做


谢谢

无论你走哪条路,都要确定;即使指定了版本,更改API也可能有问题。同一资源有多个位置是一个坏主意,应该有一个标准位置。虽然从理论上讲,您可以使用HTTP 301重定向,但如果您担心兼容性,最好避免使用

Dorian Taylor集合方案看起来是合理的(并且完全合法),不应该给任何系统(或者任何没有严重缺陷的系统)带来任何兼容性问题

如果您的URL需要用作新URL中的参数,则必须使用正斜杠和等号,但对于标准查询字符串(
?&=
)和建议的备选方案,以及包含协议的
://
,都是如此。显然,如果要使用
=在您的值中,您需要对其进行编码


我能看到的唯一可能的问题是,您的URL是否存储在CSV中,但CSV库很常见,并且引用特殊字符的定义也很明确。

我会使用Dorian Taylor的模式,直到出现问题,然后添加
/key/value/key/value
,作为替代方案,但要保持旧模式的兼容性。