Дата в пути вводит в заблуждение URI запроса - PullRequest
0 голосов
/ 05 июля 2019

У меня есть URL-адрес с датой в формате, например «Невозможно загрузить rs / Service / Store / Grantor / 122/5801 / DUE / 10/30/2017 / /true?request.preventCache=1562353357306 статус: 404»в котором 30.10.2017 - это дата в коде java, которая имеет

@GET
@Path("/dd/{sp}/{rpt}/{ter}/{date}/{grant}/{refresh}")
@Produces(MediaType.APPLICATION_JSON)

public List<ReportPeriodBean> getApprovals(@PathParam("sp") String sp,
        @PathParam("rpt") String rpt, @PathParam("ter") String ter,
        @PathParam("date") String date,
        @PathParam("grant") String grant, @PathParam("refresh") boolean refresh) throws Exception {

Как мне разрешить моему URL-адресу переходить в правильный формат даты и позволить контроллеру позаботиться обо всем остальном, если так или иначевесной?

1 Ответ

2 голосов
/ 05 июля 2019

Чтобы соответствовать URL-адресу в вашем описании, лучше всего избегать различных компонентов даты, таких как месяц, день и год.Затем внутри метода вы можете собрать их вместе, чтобы они стали объектом Date.

Чтобы захватить их все как один тип Date, он будет работать со структурой URL, где он не сможет определить разницу между «косыми чертами» в Date и «slashes», различающими различные параметры URL.При условии, что вы не хотите переключаться на представление ISO-8601 для даты и не хотите% -кодировать косые черты в% 2F или использовать строки запросов и т. Д.

Что-то подобное должно работать:

@GET
@Path("/dd/{sp}/{rpt}/{ter}/{month}/{day}/{year}/{grant}/{refresh}")
@Produces(MediaType.APPLICATION_JSON)
public List<ReportPeriodBean> getApprovals(@PathParam("sp") String sp,
        @PathParam("rpt") String rpt, 
        @PathParam("ter") String ter,
        @PathParam("month") int month,
        @PathParam("day") int day,
        @PathParam("year") int year,
        @PathParam("grant") String grant, 
        @PathParam("refresh") boolean refresh) {

    LocalDate date = LocalDate.of(year, month, day);
    // Now use the date however you like

}

Это позволит вам сохранить URL в таком синтаксисе, который кажется предпочтительным:

rs/Service/Store/Grantor/122/5801/DUE/10/30/2017/grantValue/true?request.preventCache=1562353357306

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...