在Spring Boot应用程序的REST API中将类型Integer作为RequestParam处理不正确的值

时间:2019-04-08 12:10:00

标签: rest spring-boot integer

我对测试API的负面情况之一有疑问。 我有一个带有一个RestController的spring boot应用程序,该应用程序带有一个RequestParam(“ id”),我返回相同的id以及HttpStatus.OK。

当我按下GET API时,例如:http://localhost:8080/Temp/getInteger?id=%23abcd 分配给id的值是43981,我不知道该如何分配。

理想情况下,我不希望将此字符串转换为整数,有人可以帮助我吗?

代码:

@RestController 
@RequestMapping("/Temp")
public class TempController{
  @RequestMapping(method=RequestMethod.GET, path= "/getInteger")
  public ResponseEntity<Object> getInteger(@RequestParam("id") Integer id){
    return new ResponseEntity(id,HttpStatus.OK);
  }
}

请求:

http://localhost:8080/Temp/getInteger?id=%23abcd

输出:

Http Status : 200 OK
Response Body : 43981

1 个答案:

答案 0 :(得分:0)

来自UTF-8 URL编码字符:%23是#和 从十六进制系统: abcd是43981

因此可以将其强制转换为INT。您可以添加字母“ e”并获得一个新的数字703710。如果要避免这种情况,则需要添加验证。