java - 使用 Date Param Java 从 URL 使用 Restful 方法

标签 java web-services rest jakarta-ee jax-rs

我有一个像这样的 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 调用该方法?,问题是 Date 参数,当我尝试时它给我 404 not found 或 500 内部服务器错误。

最佳答案

我建议接受日期作为 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 standard for date字符串是:yyyy-MM-dd

  • Joda Java date API被接受为日期/时间的更完整实现,并且 some believe that it is more optimised than Java's native date API特别是对于解析日期。

  • 提供日期作为纪元时间戳通常更好,尤其是当您的应用程序在不同时区运行时。但是,在接受纪元时间戳时,您必须注意 HTTP 缓存问题(例如,如果您的客户端没有截断纪元时间戳,那么您将得到很多缓存未命中)。我会引用ISO-8601因为格式化日期更易于 HTTP 缓存。

关于java - 使用 Date Param Java 从 URL 使用 Restful 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14879878/

相关文章:

java.lang.IllegalStateException : Failed to read Class-Path attribute from manifest of jar error using Selenium through Maven in Spring Boot

java - Google Play 游戏服务中的 IllegalStateException 没有意义

mongodb - 有什么理由我应该/不应该在我的 RESTful url 中使用 ObjectId

javascript - 将 Highcharts 与 REST API 集成

REST API - 客户端如何知道发布到资源的有效负载是什么?

Java 记录与 Kotlin 数据类

silverlight - 使用 WCF 将 Linq-to-Sql 对象发送到服务器时出错

java - 启动 JadeGateway 代理时指定代理名称

.net - 使用 HttpWebRequest (.NET) 处理身份验证

java - 如何避免 Visual Studio Code 警告 : "[myfile].java is a non-project file, only syntax errors are reported"