【问题标题】:Dynamic web page with RESTful content provider带有 RESTful 内容提供者的动态网页
【发布时间】:2013-06-09 12:36:39
【问题描述】:

也许这是一个新手问题,非常抱歉:)

我有一个返回 JSON 对象的 REST API。我正在尝试建立一个有 2 页的网站:

  1. 首页显示了一个表格,其中显示了文章标题(假设我们有“文章 ID”、“作者姓名”、“标题”)。 “文章 ID”列是可点击的
  2. 第二页展示了一篇文章。

我希望能够单击第一页的 id 列,执行 GET 请求以获取文章的 JSON 对象,然后在单篇文章页面中很好地呈现它。我希望 GET 请求后的 url 类似于:`http://[web-server-name]/article/[id]

如果我正在编写一个使用 jQuery 来获取 JSON 对象的静态页面,那么 url 将不是我正在寻找的资源格式。如果我要从 REST 服务器返回 HTML,那么维护这样的页面以及将逻辑与演示文稿结合起来都会很丑。

正确的做法是什么? 谢谢!

【问题讨论】:

    标签: java jquery html rest angularjs


    【解决方案1】:

    您可以必须在同一@Path 声明的方法,但@Produces 两种不同的mime 类型,根据客户端发送的Accept 标头选择好的一种:

    @GET
    @Path("/article/{id}")
    @Produces(MediaType.APPLICATION_JSON)
    public Response getArticle(@PathParam("id") long id) {
           Article myArticle = getArticleById(id);
           return Response.ok(myArticle);
    }
    
    @GET
    @Path("/article/{id}")
    @Produces(MediaType.TEXT_HTML)
    public Response getArticleHtml(@PathParam("id") long id) {
        InputStream myHtml = getClass().getClassLoader().getResourceAsStream("/path/to/html.html");
        return Response.ok(myHtml).build();
    }
    

    但这会让您的 Jax-RS 实现服务于它不适合的静态资源。 或者你可以使用像AngularJS这样的单页Javascript框架@

    【讨论】:

    • 我不熟悉 AngularJS。它会让我在这个单一的 JS 页面中更改 URL 吗?打开文章时,我可以有如下所示的网址:http://[web-server/article/[article-id]?
    猜你喜欢
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多