【问题标题】:RESTful WebService: How does a server send both View & JSON/XML?RESTful Web 服务:服务器如何同时发送 View 和 JSON/XML?
【发布时间】:2011-02-27 15:51:09
【问题描述】:

我之前编写了一些代码,尽管是小型 RESTful Web 服务 (RWS)。但在这些情况下,视图(表示层)是完全控制的,即视图是平台上本地运行的应用程序(智能手机?)。可以独立控制视图和服务器上的 RWS,它们将发送 JSON(或文本或任何方便的表示,让我们假设 JSON 仅用于主题)。

现在进入网络:视图(即 HTML 页面)驻留在服务器上。该服务器现在应该提供 HTML 和 JSON。我的问题是 2 是如何分离(或耦合)的?这是一个例子:

问题:

  1. 在图像中的步骤 (X) 处,当墙页返回给客户时,所有墙帖都填充在该页上。如果它是一个客户端,其视图不是由服务器提供的,它可能只会返回墙贴的 JSON。那么这种情况在本案中是如何处理的呢?服务器是否应该返回一个包含所有呈现/格式化逻辑的服务器端页面 (SSP)?

  2. 在步骤 (Y) 中,用户希望更新页面上的内容并将 jQuery+Ajax HTTP:PUT 发送到服务器(在某个 URI 上,所以墙页是外观?)。

困惑(== 问题?:-)

  • 向服务器发送请求时如何分离 JSON + SSP 的关注点?

  • 这就是基于 Web 的客户端的设计方式吗?返回的第一个页面 (X) 实际上是一个 SSP,其中包括对服务器进行 Ajax/REST 调用的所有逻辑??

  • 然后如何进行良好的页面构建,即 JSP(比如说)+ jquery + CSS + AJAX? (在这种情况下是否有可能没有 SSP 设计?即只有 HTML + jquery + CSS?)

有点迷茫..

提前致谢

【问题讨论】:

    标签: jsp rest architecture restlet


    【解决方案1】:

    我想我不明白你在这里需要什么。

    但是,为什么不简单地查看请求的 Content-Type 标头并返回客户端所要求的内容呢?如果他们要求 HTML,请将 HTML 发送给他们。如果他们要求 JSON,请向他们发送 JSON。

    您可能需要考虑像 JAX-RS 这样的东西,它会根据 Content-Type 分派给代码,也许这会减轻您的一些痛苦。

    【讨论】:

    • 所以我的困惑是w.r.t。格式。我只提供 JSON。现在,用户请求一个“帖子”页面,我的“Restlet 引擎”配置为将一组帖子的 Json 发送到墙上。问题是 HTML(或前端)也将从返回 JSON 的服务器中获取 - 这意味着我必须创建 2 个表示: 根据上图:墙上的 GET 返回一个 JSP之后通过 JSON 在墙上进行每次后续更新(因为它只是一小部分)。这听起来对吗?
    • 好吧,显然你需要两种表示。一个 HTML 和一个 JSON。从一个请求中做到这一点是否令人困惑?您可以轻松地在 wall.jsp 上执行 GET 并让它返回一个完全呈现的页面,然后让内部 ajax 调用 updatewall.jsp 返回 JSON 格式。或者,您可以有一个 wall.jsp,它查看请求的 Content-Type 和参数,并返回正确的 HTML 或 JSON。当浏览器点击 wall.jsp 时,它会请求 HTML。当你的 ajax 命中它时,它会要求 JSON。还是我还缺少什么?
    • 不!命中目标! :) 这基本上就是我的困惑——我错误地认为前端是 HTML/CSS/JQuery+Ajax,而 JSON 用于传输数据,却忘记了页面需要由服务器“服务”——所以我得到了与图中的步骤 X 混淆(我认为可以一步完成 - 不知道为什么,但我想!)谢谢!
    • 您也可以在 Restlet 中返回不同的媒体类型。我们有 REST Web 服务,它们实际上根据请求的 Content-Type 标头为每个资源返回四种不同媒体类型之一。 JSON、XML、高性能用例的 Kryo 二进制格式,以及帮助开发人员和操作人员调试事物的 XHTML。 (我们还支持其他几种二进制格式,但速度不如 Kryo。)
    【解决方案2】:

    网络浏览器只是一个渲染引擎。它只会呈现和执行 Web 服务器发送的内容。 在您的情况下,您必须向浏览器发送 html,无论该 html 是静态的还是在服务器上生成的,都与浏览器无关。 当浏览器呈现 html 时,它还会运行您指定的任何 js/css 代码。

    * Is this how web-based clients are designed?? The first page returned (X) is actually a SSP which includes all the logic for making Ajax/REST calls to the server??
    

    是的,您发送到浏览器的 html 包含 js 代码,该代码告诉浏览器在某些事件发生时该怎么做,例如按钮单击或页面加载。

    * How does one then go about a good page construction i.e., JSP (say) + jquery + CSS + AJAX?? (Is it possible to have a NO SSP design in this case? i.e. only HTML + jquery + CSS??)
    

    是的,你可以只提供一个包含所有正确 js 的静态 html 页面,浏览器会做它的事情。

    我希望这能回答您的问题?

    【讨论】:

    • 嗯,是的,我知道这一点。我的问题是关于与 REST 的集成。服务器将返回 JSON,但我也希望它返回相应的页面,该页面将根据 JQuery“呈现”该 JSON。问题是我是否应该将“第一”页生成为 JSP 并将其作为每个 REST 调用的外观? (生成 JSP 会非常混乱......但可能就是这样做的方式??)问题是将请求/响应与视图分开。看到这个paradox1x.org/archives/2007/08/java-based-web.shtml
    猜你喜欢
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 2016-12-08
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    相关资源
    最近更新 更多