我创建了一个Spring REST应用程序,您可以在其中执行基于POST,PUT,GET,DELETE的HTTP方法的CRUD操作.我有典型的URI模板
http://host/root/{id}/{name}/{address} and etc.
Run Code Online (Sandbox Code Playgroud)
我们有一个访问此REST服务的客户端.显然,他们以下列形式发送多字名称和地址的参数:
http://host/root/11/John+Smith/10+Las+Vegas+USA
Run Code Online (Sandbox Code Playgroud)
他们使用基于application/x-www-form-urlencoded类型的HTML编码方案.根据维基百科的文章
application/x-www-form-urlencoded类型
默认使用的编码基于一般URI百分比编码规则的早期版本,具有许多修改,例如换行标准化和用"+"而不是"%20"替换空格.- http://en.wikipedia.org/wiki/Percent-encoding
但是,标准URL编码方案似乎是在替换URI模板中的空格时使用%20.哪一个是正确的?
My Spring REST自动将%20转换为空格.这是正确的解释.我正在使用Spring 3.0.4.当我的REST服务满足+时,它被接受为原样.当然,当我将验证放到排除+时,它确实被排除在预期之外.
我在标准范围内还是有双重标准?或者客户使用古老的方案?
axt*_*avt 11
的一点是,application/x-www-form-urlencoded可使用仅在请求参数,而百分之编码在一个路径也支持.
所以,
http://host/root/11/?name=John+Smith&address=10+Las+Vegas+USA
很好,将由Spring MVC正确解码,但是
http://host/root/11/John+Smith/10+Las+Vegas+USA
是错误的,Spring MVC不解码它,因为应该使用以下形式:
http://host/root/11/John%20Smith/10%20Las%20Vegas%20USA
| 归档时间: |
|
| 查看次数: |
8893 次 |
| 最近记录: |