带有日期的 Java Spring RESTFul API 请求

标签 java spring api rest

我正在尝试向我创建的 API 发出请求。我必须提供一个名称(字符串)和一个日期间隔(两个日期)。 我收到以下错误:

Failed to convert value of type 'java.lang.String' to required type 'java.util.Date'; nested exception is java.lang.IllegalArgumentException: Could not parse date: Unparseable date: "20151211"

我尝试了很多日期格式,但都不起作用。 请求 url 是这样的:

http://localhost:8080/api/avaiableRoomTypes?hotel=Marriot&start=20151211&end=20151213

Controller 方法:

@RequestMapping(value = "api/avaiableRoomTypes", method = RequestMethod.GET)
public List<Room> CheckRoomTypeAvailability(@RequestParam(value="hotel") String name,@RequestParam(value="start") Date start,@RequestParam(value="end") Date end) {
    Hotel hotel = hotels.findByName(name);
    Iterable<RoomType> roomtypesList = roomtypes.findByhotel(hotel);
    Iterator<RoomType> roomtypesIt = roomtypesList.iterator();
    List<Room> roomsList = new ArrayList<Room>();
    while(roomtypesIt.hasNext()){
        RoomType rt = roomtypesIt.next();
          roomsList.addAll(rooms.findWithDates(start, end, rt.getId()));
    }

    return roomsList;

}

最佳答案

您需要在方法头中声明一个字符串,然后在方法中解析日期。

您还应注意 Date 的字符串构造函数已弃用 https://docs.oracle.com/javase/8/docs/api/java/util/Date.html#Date-java.lang.String- .文档建议使用 DateFormat。好吧,这是假设您使用的是 Java 8。

关于带有日期的 Java Spring RESTFul API 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34185986/

相关文章:

API - 在 BlueSnap 上更新 Shopper

java - 每 X 秒触发一次对应的 Cron 表达式是什么,其中 X > 60?

java - 具有许多元素的快速排序会导致 StackOverflowError

Web 应用程序中无法识别 Spring 配置文件

api - 我应该共享 Paypal API 凭据吗

javascript - 使用 Twitter API 时的身份验证问题

Java制作一个阅读器的副本

java - BigDecimal 中的 setcal

java - 如何使用 @NaturalId 正确覆盖 Hibernate 实体的 equals

java - @Autowired bean 在 Controller 上与@Valid 一起工作,但在 CRUD 存储库上失败