web服务-使用Date Param Java从URL使用Restful方法



我有一个像这样的restful web服务方法:

@GET
@Path("/generateInfo")
@Produces(MediaType.APPLICATION_JSON)
public String generateInfo(
        @QueryParam("a") String a,
        @QueryParam("b") String b, 
        @QueryParam("date") Date date) {
    // ...business code...
    return "hello world";
}

如何从WebBrowser调用该方法?,问题是当我尝试时,CCD_ 1参数给我找不到CCD_ 2或CCD_ 3内部服务器错误。

我建议接受日期作为String并自己解析。像这样:

@GET
@Path("/generateInfo")
@Produces(MediaType.APPLICATION_JSON)
public String generateInfo(
        @QueryParam("a") String a,
        @QueryParam("b") String b, 
        @QueryParam("date") String date) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date dateObj = sdf.parse(date);
    return "hello world";
}

通过浏览器发出此请求的方法是:

http://localhost/your_service/generateInfo?date=2013-02-14

解析日期时需要考虑的事项:

  • SimpleDateFormat在解析不同的日期格式方面非常灵活。日期字符串的ISO标准是:yyyy-MM-dd

  • Joda Java日期API被认为是一种更完整的日期/时间实现,一些人认为它比Java的原生日期API更优化,尤其是在解析日期方面。

  • 通常最好将日期提供为epoch时间戳,尤其是当您的应用程序在不同的时区上运行时。然而,在接受epoch时间戳时,您必须注意HTTP缓存问题(例如,如果您的客户端没有截断epoch时间标记,那么您将获得大量缓存未命中)。我会参考ISO-8601,因为格式化日期更容易被HTTP缓存。

这取决于URL中日期的格式。根据这个问题,构造函数Date(String)可以处理的任何格式都应该工作。如果你的日期格式不同,你无法更改,你必须使用pestrella的解决方案,将日期作为字符串接收并自己转换。

@GET
@Path("/generateInfo")
@Produces(MediaType.APPLICATION_JSON)
public String generateInfo(
 @QueryParam("a") String a,   
 @QueryParam("b") String b, 
 @QueryParam("date") String str_date) {
 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
 Date date = df.parse(str_date);
 return "hello world";
}

最新更新