8

我正在建立一个提供动态内容的网站。服务器/浏览器之间的所有通信都通过 REST 进行。PostgreSQL 用作数据存储。

我的问题是针对任何 GET 请求,我是否应该即时构建 html(以及动态内容)。

举个例子

@GET
@Produces(MediaType.TEXT_HTML)
public String getAllEmployee() {
    // employees fetched from the data base
    String html = "<HTML></head> blah blah";
    return html;
}

我的问题是是否应该即时构建 html 并将其发送回浏览器。另外像linkedin这样的大网站是如何工作的?他们是否即时生成 html 页面并将页面发回?

我能想到的另一种方法是发送嵌入了 AJAX 请求的准系统 html。然后 ajax 请求从服务器获取动态内容。

4

2 回答 2

17

REST 的核心优势之一是将表示(编码)与被访问的底层资源分离。

如果客户端通过标头请求它作为首选项,则返回 HTML 是完全可以的Accept。如果客户端表明它更喜欢 JSON 或 XML 或明年设想的任何其他超级重复编码,那么您的服务器可以返回该格式,并且您的 URI 方案不会改变一点。

最重要的是,不要永远将 REST API 绑定到单一的编码格式。作为 API 服务提供商,您可以利用 HTTP 内容协商为您提供的出色灵活性,这样您就可以让 API 客户端能够选择最适合其需求的格式。

于 2012-06-19T18:39:40.543 回答
4

没有硬性规定,但是,REST 服务通常以某种交换格式(例如 XML 或 JSON)返回数据。然后,客户端代码会将结果解释为 HTML,并在您认为合适的时候将它们注入页面。发送已经准备好的 HTML 可能是不可取的,因为

  1. 它限制了您的 API 客户端可以对数据执行的操作
  2. 您的服务层必须确定表示格式,这通常是不可取的
  3. 意味着您的服务可能会通过网络返回比所需更多的位,如果您有一个繁忙的站点,这可能会产生很大的不同。

我建议您发回 JSON 对象,并让客户端代码将生成的对象应用于某种模板(有很多方法可以做到这一点)以生成实际的 HTML。

于 2012-05-01T09:57:03.940 回答