Json vs HTML 通过 api 调用?

Json vs HTML via api call?

请注意;正如我在该问题的第五段中明确解释的那样,这不是此处关于 SO 的其他类似问题之一的重复。此外,它不是基于意见的。我只是想了解这两种做事方式的优缺点,特别是为什么 Whosebug 会按照它的方式做事。

对于我的网站,我正在构建一个通知,类似于它在顶部 Whosebug 上的实现方式;当您单击通知图标时,会出现一个包含相关通知的下拉列表。

我目前编写我的系统的方式是 api 调用 returns 包含通知的 json 对象列表,然后我在中构建 html javascript 在浏览器中。但是当我查看 SO 进行的网络调用时,我看到这里的 api 调用只是 returns 然后将 html 粘贴到下拉列表中。

我现在想知道;为什么要这样做?在我看来,只在 json 中提供数据比在它周围的所有 html 中提供数据更有效。

我查看了 another question on this topic here: which suggests a third option; some kind of templating system, but that is a bit too much for the simple html that I want to insert. So I don't really want to consider that option. One more question on this topic 专门讨论的性能差异,我也不太关心(可维护性和简单性对我来说比那些几毫秒的差异更重要)。

所以我的问题是;在 api 调用中提供所有 html 还是仅提供 json 更有利(无论出于何种原因),为什么?

在理想世界中,为了清楚地分离关注点,网络 api 应该 return 与视图无关的响应。这为您在多个方面提供了很大的灵活性

  • 您可以使用相同的 api 服务于不同的客户端技术
  • 即使您不使用不同的客户端技术,您也可能想要更改与演示相关的内容,并且如果您 return 查看特定内容,您可能需要更改您的 api 调整响应的逻辑。

这是一个意见,因此不能作为实际答案(问题将很快关闭)。

JSON,原因是任何具有重要意义的程序都会增长(它们总是如此),而您对 状态 的概念性知识将会萎缩(一如既往)确实)这意味着你需要在你的程序中清楚真相在哪里。

当真相存在于数据而非模板或演示文稿中时,这种真相概念最有效。我从经验中了解到,任何代码都应该由数据驱动。因此,发送 JSON 数据以进行单独操作可以减轻服务器代码的复杂性,并允许客户端更灵活地以您希望的任何方式呈现。当您在 6 个月内挠头想知道为什么会出现该错误时,您可以跟踪数据而不是猜测逻辑可能在哪里。

Human Javascript by Henrik Joreteg 解释得很好。

我更喜欢 JSON 回复,因为:

  • (+) 它是可重复使用的,您可以在顶部栏的下拉菜单和用户个人资料中显示此通知 -> 一个 api 服务 - 许多不同的 controls/elements
  • (+) 通过 http
  • 传输的数据较少
  • (-) 客户端计算更多,但如今,即使移动设备也有多个内核,所以我们谈论的是几毫秒