API 调用与来自前端的直接页面调用(AJAX)

Posted

技术标签:

【中文标题】API 调用与来自前端的直接页面调用(AJAX)【英文标题】:API calls vs direct page calls from front-end(AJAX) 【发布时间】:2015-01-05 21:38:50 【问题描述】:

我正在尝试编写一个“标准”商业网站。所谓“标准”,我的意思是这个站点在前端运行通常的 html5、CSS 和 javascript,一个后端(处理东西),并为数据库运行 mysql。这是一个基本的 CRUD 站点:前端只是制作数据库中存储的任何内容;后端将用户输入的任何内容写入数据库并进行一些处理。就像那里的大多数网站一样。

所以,我想在 Django 中将其作为 MTV 结构(模型-模板-视图)。我想问一下,当用户从前端(即模板)调用服务器时,是通过API调用还是通过AJAX直接调用特定页面?

通过 API 执行将是模块化和干净的方式,但我猜相对较慢(虽然不确定)。

解决此问题的正确方法是什么,记住要显示的信息将由 API 提供

谢谢

【问题讨论】:

【参考方案1】:

我也有类似的问题。首先,我认为这取决于您的企业是否有计划创建原生移动应用程序等,以及是否需要获取与网站相同的数据。在这种情况下,REST API 将是最佳选择。在这种情况下,维护一个端点来与您的数据交互比维护多个端点更简单,所以我也会让网站通过 API 进行交互。这个diagram from tuts 就是一个例子。

我认为您看到了 API 的简单性和模块化,所以最后您的问题是关于效率以及让您的网站向自己的 API 发出 HTTP 请求而不是直接与模型交互是否是一种浪费。关于这一点,我认为不必担心(或者不应该担心,除非您的 API 调用非常庞大并且成为应用程序的瓶颈)。

围绕您自己的 API 构建前端的方法似乎适用于 Twitter(阅读 "The Tech Behind the New Twitter.com")和 TripAdvisor("TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data")等。归根结底,今天的单个页面加载可能需要数十到数百个 HTTP 请求,因此更多的实际数据应该不会造成问题。

【讨论】:

很好的解释。

以上是关于API 调用与来自前端的直接页面调用(AJAX)的主要内容,如果未能解决你的问题,请参考以下文章

急 ajax 调用问题

混合内容:从 https 页面调用来自 API 的 http 内容

jquery移动同页应用程序与装载机

Spring boot REST API 仅接受来自 Angular 前端的调用

处理来自前端的 API 调用的最佳方式

WEB前端 - Ajax