Json vs HTML 通过 api 调用

Json vs HTML via api call?

本文关键字:api 调用 通过 HTML vs Json      更新时间:2023-09-26

请注意;这不是SO上其他类似问题之一的重复,正如我在这个问题的第五段中明确解释的那样。此外,它不是基于意见的。我只是在问这两种做事方式的利弊,特别是为什么Stackoverflow以它的方式做事。

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

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

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

我在这里查看了关于这个主题的另一个问题:它提出了第三种选择; 某种模板系统,但对于我想插入的简单 html 来说,这有点太多了。所以我真的不想考虑这个选项。关于这个主题的另一个问题专门讨论了性能差异,我也不太关心(可维护性和简单性对我来说比几毫秒的差异更重要)。

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

在理想情况下,为了明确分离关注点,Web API 应返回与视图无关的响应。这为您提供了多个方面的巨大灵活性

  • 您可以使用相同的 API 来提供不同的客户端技术
  • 即使您不使用不同的客户端技术,您也可能希望更改与演示文稿相关的内容,如果您返回视图特定内容,则可能需要更改 api 逻辑以适应响应。

我支持JSON响应,因为:

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

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

JSON,原因是任何重要的程序都会增长(它们总是如此),而您对状态的概念知识将变得如此(一如既往)这意味着您需要在程序中明确真相在哪里。

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

Henrik Joreteg的Human Javascript很好地解释了这一点。