我制作了一个Spring REST应用程序,您可以基于POST、PUT、GET、DELETE的HTTP方法执行CRUD操作。我有典型的URI模板。
我们有一个客户正在访问这个REST服务。显然,他们正在以以下形式发送多词名称和地址的参数:
http://host/root/{id}/{name}/{address} and etc.
我们有一个客户正在访问这个REST服务。显然,他们正在以以下形式发送多词名称和地址的参数:
http://host/root/11/John+Smith/10+Las+Vegas+USA
他们正在使用基于application/x-www-form-urlencoded类型的HTML编码方案。根据维基百科上的文章:
默认使用的编码方式是基于最早版本的URI百分比编码规则,但做了一些修改,如换行符规范化和用“+”代替“%20”来替换空格。- http://en.wikipedia.org/wiki/Percent-encoding
然而,标准的URL编码方案似乎是在URI模板中使用%20来替换空格。那么哪一个才是正确的呢?
我的Spring REST自动将%20转换为空格。它被正确解释了。我正在使用Spring 3.0.4。当我的REST服务遇到+时,它会按原样接受。当然,当我添加验证以排除+时,它确实像预期的那样被排除了。
我是否符合标准,还是存在这样的双重标准?或者客户端使用的是古老的方案?