从REST结果中模板化JSON

时间:2016-09-19 06:29:39

标签: json rest python-3.x cherrypy mako

前提: 这个问题更像是"这是正确的方法吗?"而不是"我该怎么做?"

情况: 我在this教程之后创建了一个CherryPy REST应用程序。使用带有简单json的{​​{1}}模块返回数据。这个例子有效。我有一个mako模板,我想用它来创建一个包含数据的HTML表。同样,模板本身也有效。

问题:在我看来,它的工作原理如下:

  1. 用户要求提供网址
  2. REST API使用结果
  3. 创建JSON
  4. mako模板生成给定结果的HTML
  5. HTML将返回给用户
  6. 我的问题是,我不确定这是正确的方法:在我的(小)经验中,JSON应该返回给客户端,它应该以某种方式呈现它(使用jQuery或其他一些客户端) - 边语);相反,mako模板在服务器端工作,那就是我遇到的问题。

    你有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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

  • 用户要求REST客户端对服务
  • 执行example.com/api/v1
  • 客户请求relation=some-automated-stuff获取主页
  • 客户端在主页面上查找超链接
  • 客户端找到some-automated-stuff
  • 的超链接
  • 客户端遵循该超链接并从REST API
  • 获取JSON结果
  • 客户端使用mako模板并生成给定结果的HTML
  • HTML将返回给用户

典型的客户端是第三方服务器端应用程序,由服务注册并获得唯一的API密钥。用户通过授予API密钥权限,允许客户在其帐户上执行{{1}}。因此,例如,服务可以是facebook API,并且客户端可以是由Zynga开发的应用程序,例如, Farmville的。如果您允许客户在您的新闻Feed上发布您刚刚在您的服务器场上收获了100000种作物,那么它会向facebook API发送有关此请求的请求,因此您的新闻Feed中会显示一些自动消息。

OFC。如果需要,您可以编写第一方AJAX或服务器端客户端,但如果您不想支持第三方客户端,那么开发REST服务没有多大意义。 OFC。您的客户不会像常规应用程序那样容易打破,所以如果这很重要,那么值得努力。