【问题标题】:Not able receive Double data type in Rest API developed with Spring在使用 Spring 开发的 Rest API 中无法接收 Double 数据类型
【发布时间】:2015-05-19 18:42:09
【问题描述】:

在我使用 Spring Framework 开发的 REST API 中,我有一个接收两个 Double 值的 Rest 端点,Rest 调用是: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 中接收双精度数据类型?

【问题讨论】:

    标签: java spring rest spring-mvc


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如下更新您的代码 - 请注意 {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
      

      【讨论】:

        【解决方案3】:

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

        据报道,有些东西正试图对传入的 URL 应用后缀匹配……这正在消耗最终路径组件中第一个点之后的所有内容。

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

        【讨论】:

          猜你喜欢
          • 2019-08-10
          • 2016-08-19
          • 2020-09-12
          • 1970-01-01
          • 2018-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多