2

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

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

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

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

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

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

4

1 回答 1

3

您可以必须同时声明两种不同的 MIME 类型的方法@Path@Produces根据客户端发送的标头选择好的一种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 框架

于 2013-06-13T08:11:52.610 回答