更改Rest控制器方法签名

时间:2019-06-03 16:51:37

标签: spring spring-boot

我有这个控制器:

@GetMapping("/{id}")
public SomeData getData(@PathVariable("id") Long id, HttpServletRequest request){
    // do something with Long Id
}

如果我将Long参数更改为String,有什么要打破的(也许在春季,转换REST数据时)?

@GetMapping("/{id}")
public SomeData getData(@PathVariable("id") String id, HttpServletRequest request){
    // Convert id to Long and do something with it
    ...................
}

只要确保将字符串转换为所需的任何类型?

2 个答案:

答案 0 :(得分:0)

不要打扰现有的客户端,因为它们只能向您发送Long字符串,无论他们发送给您什么Long字符串,您都可以将其转换为{{ 1}} Java对象。

答案 1 :(得分:0)

以上代码不会破坏任何内容。首先请清楚记下URL。例如http://localhost:8080/test/123 默认情况下,在此URL中,路径param(123)仅是字符串数据类型。当我们将值(123或abc)与字符串连接时,它将成为该字符串的一部分。这意味着123是字符串。这样就不会抛出任何错误。之后,它将仅选择我们在代码中声明的数据类型。它将尝试进行类型转换。如果数据类型不匹配,它将抛出异常。