我正在使用Spring boot开发我的第一个REST API。
我在API上创建了多个请求,目前正在测试它们。
我在以下请求之一中发现了一个错误:
设置@PathVariable
后,将其四舍五入
这是代码:
@RequestMapping(path = "/find/near/{lati}/{longi}", method = GET, produces = APPLICATION_JSON_VALUE)
public Animals getAnimalsNearPosition(@PathVariable double lati, @PathVariable double longi) throws CenterNotFoundException {
// On récupère le centre associé à cette cage
Center center = centers.findCenterNear(lati, longi);
Animals animals = new Animals();
// On recherche parmis toutes les cages celles ayant une position proche
for (Cage c : center.getCages()) {
if (Position.isNear(c.getPosition().getLatitude(), lati, c.getPosition().getLongitude(), longi)) {
for (Animal a : c.getResidents()) {
animals.addAnimal(a);
}
}
}
// On retourne les animaux
return animals;
}
例如,如果我发送
GET /find/near/4.50/1.39
变量lati等于4.50,但longi等于1.0而不是1.39。
我尝试使用Intellij进行调试,但我不知道为什么会发生...
有什么想法吗?
答案 0 :(得分:1)
Spring在点(。)之后截断值。因为第一个值已经为4.5,所以它似乎没有被截断,但是实际上第一个参数也被截断了。您也可以在这里找到解决问题的方法。
答案 1 :(得分:0)
我用正则表达式解决了
@RequestMapping(path = "/find/at/{lati}/{longi:.+}", method = GET, produces = APPLICATION_JSON_VALUE)