无法在使用Spring开发的Rest API中接收Double数据类型

时间:2015-03-17 10:59:01

标签: java spring rest spring-mvc

在我使用Spring Framework开发的REST API中,我有一个Rest端点接收Two Double值,Rest Call是:http://localhost:8080/restapp/events/nearby/12.910967/77.599570

这里,第一个参数(双数据类型),即12.910967我能正确接收,即12.910967。 但是第二个参数,即77.599570我只能在小数点截断后收到77.0的数据。

我的REST后端是:

@RequestMapping(value = "/nearby/{lat}/{lngi}", method = RequestMethod.GET, produces = "application/json")
public List<Event> getNearByEvents(@PathVariable("lat") Double lat, @PathVariable("lngi") Double lngi, HttpServletResponse response) throws IOException 

如何在REST api中接收双数据类型?

3 个答案:

答案 0 :(得分:3)

更新您的代码,如下所示 - 请注意指定正则表达式的{lngi:.+},这意味着某些字符将显示在.

之后
@RequestMapping(value = "/nearby/{lat}/{lngi:.+}", method = RequestMethod.GET, produces = "application/json")
public List<Event> getNearByEvents(@PathVariable("lat") Double lat, @PathVariable("lngi") Double lngi, HttpServletResponse response) throws IOException

答案 1 :(得分:1)

我认为这可能与此处描述的问题相同:

据报道,有些东西试图将后缀匹配应用于传入的URL ...并且在最终路径组件中的第一个点之后消耗了所有内容。

事实上,这种行为被认为是一个错误,并在Spring 3.1中得到修复:

答案 2 :(得分:0)

您可以尝试在RequestMapping值中使用正则表达式强制整个值:

@RequestMapping(value = "/nearby/{lat}/{lngi:\d+\.\d+}")