从 REST 结果中模板 JSON

Templating JSON from REST results

前提: 这个问题更像是 "is this the correct approach?" 而不是 "how do I do this?"

情况: 我按照 this 教程创建了一个 CherryPy REST 应用程序。使用带有简单 json.dumpsjson 模块返回数据。这个例子有效。我有一个 mako 模板,我想用它来创建带有数据的 HTML table。同样,模板本身就可以工作。

问题:在我看来,它是这样工作的:

  1. 用户要求 URL
  2. REST API 创建 JSON 结果
  3. 根据结果
  4. ,mako 模板会生成 HTML
  5. 将HTML返回给用户

我的问题是,我不确定这是正确的方法:根据我的(小)经验,JSON 应该返回给客户端,客户端应该以某种方式呈现它(使用 jQuery 或其他一些客户端语言);相反,mako 模板在服务器端工作,这就是我遇到的问题。

你有什么建议吗?

您不需要 REST 来解决这个问题,这是一个常规的 Web 应用程序。只是为了向您展示这是如何通过 REST 服务工作的:

  • 用户要求 REST 客户端在服务some-automated-stuff上做
  • 客户端请求example.com/api/v1获取主页面
  • 客户端在主页上寻找超链接
  • 客户端找到 relation=some-automated-stuff
  • 的超链接
  • 客户端跟随该超链接并从 REST API
  • 获得 JSON 结果
  • 客户端使用 mako 模板并根据结果HTML 生成
  • 将HTML返回给用户

典型的客户端是第 3 方服务器端应用程序,它由服务注册并获得唯一的 API 密钥。用户通过授予 API 密钥权限,允许客户在他们的帐户上执行 some-automated-stuff。例如,服务可以是 facebook API,客户端可以是 Zynga 开发的应用程序,例如农场。当您允许客户端 post 在您的新闻源上显示您刚刚在您的农场收获了 100000 种作物时,它会向 facebook API 发送关于此的请求,因此一些自动消息将显示在你的动态消息。

当然。如果你愿意,你可以编写第一方 AJAX 或服务器端客户端,但如果你不想支持 3rd 方客户端,那么开发 REST 服务就没有多大意义。 Ofc。您的客户端不会像常规应用程序那样容易崩溃,因此如果这很重要,那么可能值得付出努力。