【问题标题】:Pass date through postman通过邮递员传递日期
【发布时间】:2021-01-15 04:30:42
【问题描述】:

这是我的控制器:

@GetMapping("/checkMeetingRoomAvailability")
public @ResponseBody ResponseDto checkMeetingRoomAvailability(@DateTimeFormat(pattern = "dd-M-yyyy hh:mm:ss") Date begin,
        @DateTimeFormat(pattern = "dd-M-yyyy hh:mm:ss") Date end, @RequestParam Integer capacity) {
    return meetingRoomServiceLocal.checkMeetingRoomAvailability(begin, end, capacity);
}

当我使用邮递员传递输入时,它会给出 400 错误请求。

meetingRoomController/checkMeetingRoomAvailability?begin=30-9-2020 14:30:00&end=30-9-2020 15:30:00&capacity=10

我无法弄清楚为什么会出现此错误。

【问题讨论】:

  • 您需要编码您的请求参数。空格和连字符需要编码。
  • 我认为您的 URL 中不应包含空格,该错误可能与您的日期时间格式有关,该格式将日期与一天中的时间用空格隔开。这只会对您的 URL 不利,一般不会...
  • 如前所述,您应该转义空格或使用 ISO 格式来使用“T”而不是空格:docs.oracle.com/javase/8/docs/api/java/time/format/…

标签: java spring api postman datetime-format


【解决方案1】:

以下任一解决方案都可以使用:

  1. 推荐解决方案:将代码中的dd-M-yyyy hh:mm:ss替换为dd-M-yyyy'T'hh:mm:ss,然后就可以像meetingRoomController/checkMeetingRoomAvailability?begin=30-9-2020T14:30:00&end=30-9-2020T15:30:00&capacity=10一样进行测试了。
  2. 对 URL 进行编码,以便日期和时间之间的空间可以适当编码,例如作为测试,您可以使用某些编码工具对 meetingRoomController/checkMeetingRoomAvailability?begin=30-9-2020 14:30:00&end=30-9-2020 15:30:00&capacity=10 进行编码,例如https://www.urlencoder.org/ 并使用 Postman 中的编码 URL。我不建议这样做,因为它会强制您的客户端在向您的服务器发送请求之前对 URL 进行编码。

【讨论】:

    猜你喜欢
    • 2016-09-17
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多