我们有一个应用程序,它通过客户端发出的REST请求进行通信。
REST请求包含"region name“和"ID”作为参数
因此,请求将类似于(对于DELETE)
http://host:port/regionnameID 联合中区域之间的这些REST请求经过适当的URL编码
我发现如果区域名称中有斜杠("/"),这些请求就会失败。
然后,请求将如下所示
http://host:port/region/nameID 这是由于当区域名称中有一个'/‘时,HttpRequesthandler错误地解释了Rest URL。
现在,我们无法控制客户端发送REST请求,区域名称中包含"/“。
是否有任何方法/配置/变通方法可以防止HttpRequestHandler返回404
发布于 2010-03-30 00:51:04
您应该使用urlrwrite重写urls,并在内部使用查询参数。
<rule>
<name>Inbound:</name>
<from>^(.*)ID$</from>
<to last="true">delete?regionName=$1</to>
</rule>将您的all重写过滤器添加到web.xml中所有其他过滤器的前面
发布于 2010-03-29 19:55:30
这是一个有点脏的问题。我在这里尝试做的是使用Spring @RequestMapping注释。这里有一些文档:http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html
您可以在传递给@RequestMapping的值中指定ant通配符。如果您的区域数量有限,则可以将它们全部映射到一个方法,如下所示:@RequestMapping(value={"/region1**","/region2**","/region3**")
在您的控制器方法中,您必须添加额外的逻辑以解析出nameID。
如果您有大量的区域,那么我将创建一个单独的Spring Web应用程序(servlet)来处理这些请求。该应用程序将有一个缓存的区域查询表。
发布于 2010-03-29 18:33:08
配置您自己的handlerMapping bean (可能基于AbstractUrlHandlerMapping)
https://stackoverflow.com/questions/2537033
复制相似问题