也许这是一个新手问题,所以抱歉:)
我有一个返回 JSON 对象的 REST API。我正在尝试建立一个有 2 个页面的网站:
- 第一页显示一个表格,其中显示文章标题(假设我们有“文章 ID”、“作者姓名”、“标题”)。 “文章 ID”列可点击
- 第二页显示一篇文章。
我希望能够从第一页单击 id 列,执行 GET 请求以获取文章的 JSON 对象,然后在单篇文章页面中很好地呈现它。我希望 GET 请求后的 url 类似于:`http://[web-server-name]/article/[id]
如果我正在编写一个静态页面,使用 jQuery 来获取 JSON 对象,那么 url 将不会采用我正在查找的资源格式。如果我从 REST 服务器返回 HTML,那么维护此类页面以及将逻辑与演示文稿耦合起来都会很丑陋。
正确的做法是什么? 谢谢!
最佳答案
您可以必须在同一位置声明方法 @Path
但那个@Produces
两种不同的 mime 类型,根据 Accept
选择好的一种。客户端发送的 header :
@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 实现提供其设计目的之外的静态资源。 或者您可以使用单页 Javascript 框架,例如 AngularJS
关于java - 具有 RESTful 内容提供商的动态网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17081763/