从 REST 结果中模板 JSON
Templating JSON from REST results
前提:
这个问题更像是 "is this the correct approach?" 而不是 "how do I do this?"
情况:
我按照 this 教程创建了一个 CherryPy REST 应用程序。使用带有简单 json.dumps
的 json
模块返回数据。这个例子有效。我有一个 mako 模板,我想用它来创建带有数据的 HTML table。同样,模板本身就可以工作。
问题:在我看来,它是这样工作的:
- 用户要求 URL
- REST API 创建 JSON 结果
- 根据结果
,mako 模板会生成 HTML
- 将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。您的客户端不会像常规应用程序那样容易崩溃,因此如果这很重要,那么可能值得付出努力。
前提: 这个问题更像是 "is this the correct approach?" 而不是 "how do I do this?"
情况:
我按照 this 教程创建了一个 CherryPy REST 应用程序。使用带有简单 json.dumps
的 json
模块返回数据。这个例子有效。我有一个 mako 模板,我想用它来创建带有数据的 HTML table。同样,模板本身就可以工作。
问题:在我看来,它是这样工作的:
- 用户要求 URL
- REST API 创建 JSON 结果
- 根据结果 ,mako 模板会生成 HTML
- 将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。您的客户端不会像常规应用程序那样容易崩溃,因此如果这很重要,那么可能值得付出努力。