Я думаю, проблема в том, что эти термины используются так взаимозаменяемо, что на самом деле не так много строгого определения.
На мой взгляд, API - это почти все, что вы используете для взаимодействия с другим программным обеспечением / оборудование. Это может быть командная строка, HTTP API, собственные мобильные API, собственные веб-API, методы взаимодействия с GPIO, L2 C, ... различные протоколы.
Большая часть того, что запрограммировано, использует множество уровней различных API (абстракций), метод технически API. Вы уловили суть?
Веб-API обычно использует HTTP (S) или аналогичную технологию для предоставления доступа к API. Вы могли бы также рассматривать "веб-API" как что-нибудь, что предоставляет его API через inte rnet, например, через TCP, или используя gRP C, et c ..
REST API - это особый тип веб-API, определяющий стандарт для проектирования / разработки API без сохранения состояния, предоставляемых через HTTP (s), этот стандарт принят большинством современных API, хотя некоторые из них не являются RESTful, скорее RESTi sh, но я отвлекся. [1] API-интерфейсы RESTful будут иметь такие конечные точки, как: GET /users/1
для выполнения операций CRUD, и обычно принимают / ответ JSON.
Веб-сервисы == Веб-API, на мой взгляд, не большая разница, сервис (на мой взгляд) может быть API, может также быть сервисом, который не предоставляет API и только повторяет задачу.
Я не собираюсь комментировать SOAP, я был очень молод, когда SOAP был рядом, но я считаю, что он использовал XML.
РЕДАКТИРОВАТЬ: Это очень широкая тема c, которая, честно говоря, вызовет некоторые обсуждения в зависимости от возраста, опыта и фона. Но это мое мнение относительно терминов, которые вы изложили выше.
[1] https://en.wikipedia.org/wiki/Representational_state_transfer