我应该将完整的网页作为html/text传递给其余的GET电话

Amm*_*kun 6 html rest

我正在建立一个服务于动态内容的网站.通过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;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是html是否应该动态构建并发送回浏览器.另外像linkedin这样的大型网站如何运作?他们是否动态生成html页面并发回页面?

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

Bri*_*lly 12

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

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

最重要的是,不要永远将REST API与单一编码格式联系起来.充分利用HTTP内容协商为API服务提供商提供的极大灵活性,这样您就可以让API客户端根据需要选择最合适的格式.

  • 8 年后,它仍然主要是 JSON :D (3认同)

Hac*_*ese 6

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

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

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