为了账号安全,请及时绑定邮箱和手机立即绑定

路径中的日期会误导请求 URI

路径中的日期会误导请求 URI

慕桂英3389331 2023-03-09 13:37:48
我有一个日期格式为“无法加载 rs/Service/Store/Grantor/122/5801/DUE/10/30/2017//true?request.preventCache=1562353357306 状态:404”的 URL,其中 10 /30/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 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

为了匹配您的描述中的 URL,最好的办法是转义月、日和年等不同的日期部分。然后在方法内部,您可以将它们拼凑起来成为一个 Date 对象。


要将它们全部捕获为一种日期类型,将针对 URL 结构运行,在这种情况下,它无法区分日期中的“斜线”与区分不同 URL 参数的“斜线”之间的区别。如果您不想为日期切换到 ISO-8601 表示形式并且不想将斜杠 %-encode 为 %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


查看完整回答
反对 回复 2023-03-09
  • 1 回答
  • 0 关注
  • 55 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信