软件开发接口术语之间的差异:API、Web API、REST API、Web 服务、SOAP 服务

Difference between software development interfacing terms: API, Web API, REST API, Web Services, SOAP Services

API 对比 Web API 对比 REST API 对比 Web 服务对比 SOAP 服务

我在面试中多次遇到这个问题。另外,我发现当有人要求他们解释这些术语中的任何一个时,很多人会感到困惑,他们开始混淆这些术语。

我浏览了网上的很多内容,但我从未找到任何页面在一个位置对所有这些术语进行了很好的解释。

谁能解释一下这些术语以及它们是如何相互关联的?

我认为问题在于这些术语可以互换使用,因此实际上没有太多严格的定义。

在我看来,API 几乎是您用来连接另一块 software/hardware 的任何东西。这可以是命令行、HTTP API、本机移动 APIs、本机 Web APIs、与 GPIO、L2C 交互的方法,...不同的协议。

编程的大部分内容使用许多层不同的 APIs(抽象),一种方法在技术上是 和 API。你明白了吗?

Web API 通常会使用 HTTP(S) 或类似技术来公开其 API。您 可以 也可以将 "web" API 视为任何可以在互联网上公开它的东西 API,例如通过 TCP,或使用 gRPC 等..

REST API 是一种特殊类型的 Web API,为通过 HTTP(s) 公开的 designing/developing 无状态 API 定义了一个标准,该标准是被大多数现代 API 所采用,尽管有一些不是 RESTful,更 RESTish,但我离题了。[1] RESTful APIs 将有如下端点:GET /users/1 以执行 CRUD 操作,并且通常会 accept/response JSON。

Web 服务 == Web API 在我看来,区别不大,一个服务(在我看来)可以是一个 API,它 可以 也是一个不公开 API 并且只重复任务的服务。

我不打算评论 SOAP,SOAP 出现的时候我还很年轻,但是我相信它使用 XML。

编辑:这是一个非常广泛的话题,老实说会根据年龄、经验和背景引发一些讨论。但这是我对你上面概述的条款的看法。

[1] https://en.wikipedia.org/wiki/Representational_state_transfer