gpt4 book ai didi

java - 路径中的日期误导了请求 URI

转载 作者:行者123 更新时间:2023-12-02 01:26:00 24 4
gpt4 key购买 nike

我的 URL 的日期格式类似于“无法加载 rs/Service/Store/Grantor/122/5801/DUE/10/30/2017//true?request.preventCache=1562353357306 状态:404”其中 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 采用正确的日期格式,并允许 Controller 处理其余的事情, Spring 是否有?

最佳答案

为了匹配描述中的网址,最好的办法是转义不同的日期组件,如月、日和年。然后在方法内部,您可以将它们重新组合在一起成为 Date 对象。

要将它们全部捕获为一种日期类型,将针对 URL 结构运行,它无法区分日期中的“斜杠”与区分不同 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

关于java - 路径中的日期误导了请求 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56908177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com