设计我的RESTful API,我想使用以下URI
http://[HOST]/[PLANET]/[LAT];[LONG]
e.g。
http://myserver/earth/50.2;29.1
Spring MVC中这种方法的适当注释是什么?这是下一个好吗?
@RequestMapping(value = "/{planet}/{lat};{long}", method = RequestMethod.GET)
public String showInfoAboutCoords(
@PathVariable final String planet,
@PathVariable final String lat,
@PathVariable final String long,
final HttpServletResponse response) {
// Implementation
}
如果这个没问题 - @MaskFormat("###-##-####")
有什么用?
答案 0 :(得分:2)
您的URI模式有两个问题:
;
视为分隔符并修剪URI(例如Tomcat的bug 30535)。因此,作为一种解决方法,您可以使用一些不同的角色,例如,
。所以,你会有像
这样的东西@RequestMapping(value = "/{planet}/{lat:.*},{long:.*}", method = RequestMethod.GET)
请注意,由于您禁用了Spring的扩展处理,因此您必须在需要时手动启用它(这也需要更严格的正则表达式,以避免将小数点与扩展分隔符混淆):
@RequestMapping(value =
{"/{planet}/{lat:.*},{long:\\d+\\.\\d+}",
"/{planet}/{lat:.*},{long:\\d+\\.\\d+}.*"},
method = RequestMethod.GET)
通过@MaskFormat
,您可能意味着来自mvc-showcase
的注释(请注意,它注意到内置注释)。与MaskFormatAnnotationFormatterFactory
一起,它演示了将路径变量(即字符串)转换为方法参数的新格式设施。实际上它会将String
转换为String
s,因此它仅用于验证。