API与前端与后端之间的区别


22

我正在尝试编写一个“标准”商业网站。所谓“标准”,是指该站点在前端,后端(用于处理内容)运行常规的HTML5,CSS和Javascript,并在数据库中运行MySQL。这是一个基本的CRUD网站:前端几乎可以存储数据库中存储的所有内容;不论用户输入什么,后端都会将其写入数据库并进行一些处理。就像大多数网站一样。

创建我的Github存储库以开始编码时,我意识到我不了解前端后端API之间的区别。解决我的问题的另一种方式是:API进入这张图片的位置是什么?

我将列出更多详细信息,然后列出我要提出的问题-希望这会使你们对我的实际问题有更好的了解,因为我很困惑,以至于我不知道要问的具体问题。

一些更多的细节:

  • 我想尝试Model-View-Controller模式。我不知道这是否会改变问题/答案。
  • 该API将是RESTful
  • 我希望后端使用自己的API,而不是允许后端作弊并调用特殊查询。我认为这种风格更加一致。

我的问题:

  • 前端是否调用调用API的后端?还是前端只是调用API而不是调用后端?
  • 后端是否仅执行API,并且该API将控制权返回给后端(其中后端充当最终的控制器,委派任务)?

建议使用详尽详尽的答案来解释API与前端后端的作用。如果答案取决于编程模型(除Model-View-Controller模式以外的模型),请描述API的这些其他思考方式。谢谢。我很困惑

Answers:


24

我认为您对API术语被许多Web开发人员滥用和滥用的方式感到困惑。

  • API是指应用程序编程接口,即不同系统(或同一系统的各个部分)之间任何正式指定的接口。
  • 不久前,对于网络启动而言,通过通常使用REST和JSON的Web服务API提供对内部数据的公共访问成为一件大事,从而使第三方开发人员能够与他们的系统集成。Web开发人员开始使用术语“ API”来专门(仅)表示“公共可访问的Web服务”,并且滥用它来包含其实现。
  • 就前端和后端而言,此Web服务API(及其实现) backend。它的某些部分可能是公共可访问的,而其他部分则只能在前端使用。
  • 另一个名称是“服务层”,即代码
    • 代表前端调用的服务
    • 不包含任何显示逻辑(毕竟这是前端的工作)
    • 比简单的CRUD操作更为抽象和粗糙(一个服务调用通常会涉及多个CRUD操作,应在数据库事务中执行)。
    • 包含应用程序的业务逻辑

我有一个很愚蠢的问题。这是面向服务的体系结构的本质吗?
约翰尼,2015年

@johnny:否-SOA是一个抽象程度更高的概念,它更多地是关于组织业务功能的方式而不是技术层。
Michael Borgwardt 2015年

我不会称它为滥用。也许是“更名”?它与“ MVC”相同,在Web开发的上下文中,这与该术语诞生时的PARC时代完全不同。
Thomas Junk

9

让我们勾勒出一个具有“前端”和“后端”的“典型”网站的架构。并且由于它是一个网站,我们还将明确拥有一个“客户”。(由于浏览器中的JavaScript无法直接在服务器上调用MySQL。)

为了清楚起见,我们使用的术语是:

  • 客户端:兼容HTML5的浏览器,尤其是。加载了DOM和JavaScript以对其进行操作。
  • 前端:指向DOM的PHP服务器,既包含请求的单个页面,又包含一些AJAX样式的XML或JSON访问点。
  • 后端:运行MySQL的数据库服务器。

对于正确设计的程序,这些组件中的每个组件都有一个专用API与其他组件进行通信。“前端” PHP代码不会SELECT直接发出任意SQL 语句,而是会调用存储过程,预授权SQL甚至对在后端服务器上运行的完全不同的PHP实例进行不同的PHP调用。这些存储过程或不同的HTTP调用本身就是API。

即使我们允许设计中的某些杂物,定义也不会改变。如果您的PHP文件直接写了一个SQL字符串并将其发送到MySQL,则它仍然是一种API,尽管这是非常不寻常的,您不太可能重复。

注意,完全有可能使您的前端php严格同步,而没有任何AJAX伏都教。如果您在上述同步文件中调用相同的外部PHP函数,则可以将它们视为使用与客户端版本相同的API,尽管此处使用的术语“ API”可能并没有真正的清晰度。

毕竟,作为一种应用程序编程接口的API ,实际上是指某个程序在其自身进程之外进行的任何调用。 如果您要编写一个既有前端又有后端的项目,例如上面的AJAX / PHP / MySQL或MS Access / SQL Server,那么应该明确指定彼此之间的调用方式,如果没有其他原因,除了让它容易知道发生故障时在哪里看。

公共API的主题完全是另外一回事。在上面的示例中,只有客户端显示的URL是“公共API”。其他所有内容本质上都是“私有”。正如您所料,任何无法控制的代码都可以调用内部API,您要么完全拒绝此类结果,要么保留以后再这样做的权利。


2
实际上,前端是客户端代码(HTML,Javascript),后端是服务器代码(PHP,Python,Ruby)。
Pithikos

-3

一个API处理诸如GET,POST,FETCH,DELETE等HTTP请求,这些请求可根据您的令牌访问来使用,以检索特定格式的数据(例如json,xml等)。

此“数据”可用于您自己的应用程序中,以获取API(应用程序编程接口),这是一个公共可访问的Web服务,用于收集某些读者可能感兴趣的数据。

此数据可能返回表示失败的数据集,或从其API服务器检索数据

API旨在作为后端,因此可以在任何前端环境中使用。这意味着它可以在可处理https请求的Web,Android,iOS ...应用程序中使用

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.