Java http GET путь к неправильному API - PullRequest
0 голосов
/ 21 октября 2019

Справочная информация: мы обновили spring с 2.x до 4.x, чтобы устранить уязвимость в безопасности. Это также включало в себя обновление jaxrs, resteasy, hibernate и кучу других вещей. Таким образом, один из этих компонентов что-то сломал.

Проблема в том, что

@GET
@Path("/ns/rating/ascsv/{valid}")
@Produces({MediaType.TEXT_PLAIN })
String getAllNettingSetRating(@PathParam("valid") String valid);

неправильно перенаправляется на

@GET
@Path("ns/{nsid}/{valid}")
@Produces({ MediaType.APPLICATION_XML })
AgreementResponse getAgreementByNettingSetId(
        @PathParam("nsid") String nsid, 
        @PathParam("valid") String valid);

Где "рейтинг" передается как {nsid} и «ascsv» передаются как {valid}

Другими словами, пользователь вызывает «... / ns / rating / ascsv / 20190830», но он перенаправляется в метод для «ns/ {nsid} / {valid} ", и наши статические строки" rating "и" ascsv "передаются как параметры для неправильного API.

Кто-нибудь видел что-то подобное?

1 Ответ

0 голосов
/ 21 октября 2019

С SpringBoot используйте @PathVariable.

В более сжатой форме вы можете использовать

@RequestMapping(value="ns/{nsid}/{valid}", method=RequestMethod.GET)
@Produces({ MediaType.APPLICATION_XML })
AgreementResponse getAgreementByNettingSetId(
        @PathVariable("nsid") String nsid, 
        @PathVariable("valid") String valid) {
// your code here
}
...