也许这是一个新手问题,所以很遗憾:)
我有一个返回JSON对象的REST API。我正在尝试用2页构建一个网站:
我希望能够从第一页单击id列,执行GET请求以获取文章的JSON对象,然后在单篇文章页面中很好地呈现它。我想在GET请求之后的URL是这样的:`http:// [web-server-name] / article / [id]
如果我正在编写静态页面,则使用jQuery来获取JSON对象,那么url将不会处于我正在寻找的资源格式中。如果我将从REST服务器返回HTML,那么维护这样的页面并将逻辑与演示文稿结合起来将是丑陋的。
这样做的正确方法是什么? 谢谢!
答案 0 :(得分:3)
您可以使用相同@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实现服务于它不适合的静态资源。 或者您可以使用单页Javascript框架,如AngularJS