Json vs HTML通过api调用?

时间:2015-01-29 13:12:13

标签: javascript html ajax json api

请注意;这不是SO上其他类似问题的重复,正如我在这个问题的第五段中清楚解释的那样。此外,它不是基于意见的。我只是要求两种做事方式的专业和缺点,特别是为什么Stackoverflow按照它的方式做事情。

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

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

我现在想知道;为什么这样做呢?在我看来,在json中提供数据而不是围绕它的所有html更有效率。

我检查了another question on this topic here:这表示第三种选择;某种模板系统,但对于我想要插入的简单html来说,这有点太多了。所以我真的不想考虑这个选择。 One more question on this topic专门讨论性能差异,我也不太关注(可维护性和简单性对我来说比那几毫秒差异更重要)。

所以我的问题是;是否更有利(无论哪个原因)在api调用中提供所有html或json,以及为什么?

3 个答案:

答案 0 :(得分:1)

在理想的世界中,为了明确区分关注点,web api应该返回视图不可知的响应。这为您提供了多方面的灵活性

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

答案 1 :(得分:1)

我认为JSON响应是因为:

  • (+)可重复使用,您可以在顶部栏和内部用户个人资料的下拉列表中显示此通知 - >一个api服务 - 许多不同的控件/元素
  • (+)通过http
  • 转移的数据较少
  • ( - )更多计算客户端,但是现在,即使是移动设备也有多个内核,所以我们谈的是几毫秒

答案 2 :(得分:0)

这是一个意见,所以不能成为一个实际的答案(问题很快就会结束)。

JSON,原因是任何有意义的程序都会增长(它们总是这样),而你对状态的概念知识将会萎缩(就像它一直这样)这意味着你需要明确在您的程序中真相

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

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