Всем привет! Меня зовут Арина. В тестировании я работаю 11 лет. Сейчас работаю Lead QA в мобильной команде в финтехе. Последние три года работаю наставником в Yandex.Practicum. В последние месяцы начала писать статьи-пояснения для своих студентов. Теперь решила делиться ими и на habr. А еще у меня есть уютных телеграм канал про тестирование toQAit (откуашь это!).

Когда-то в университете у меня был такой предмет - логика. Сам предмет прошел почти мимо - но одну задачку я почему-то очень помню. Про тигров. Там было что-то про путаницу и пересечение понятий. И звучало примерно так: "Все тигры - полосаты, но не все полосатые - тигры". Сейчас я ее часто вспоминаю, когда мне приходится иметь дело с понятиями грань между которыми достаточно невнятна и размыта.

Разница между API и web services - как раз про это. Я даже фразу на эту тему прочла:

Все веб-сервисы являются API-интерфейсами, но не все API-интерфейсы являются веб-сервисами

Давайте разбираться.

Определения

Итак это два термина, которые часто употребляются в интернет-разработке. Они оба используются для передачи данных между приложениями, но имеют некоторые ключевые различия.

API - это интерфейс программирования приложений, который обычно используется для передачи данных между двумя приложениями. Он обычно предоставляет только необходимую информацию, которая может быть использована для выполнения конкретной задачи. API может быть использован для общения между приложениями на разных языках программирования.

Веб-сервисы – это набор открытых протоколов и стандартов, которые широко используются для обмена данными между системами или приложениями.

Программные приложения написаны с использованием различных языков программирования и работают на нескольких платформах. Это позволяет использовать веб-сервисы для обмена данными по компьютерным сетям.
Прежде всего, веб-сервисы (или веб-службы) — это технология. И как и любая другая технология, они имеют довольно четко очерченную среду применения.
Веб-сервисы должны быть реализованы различными способами. Двумя типами широко используемых веб-сервисов являются веб-сервисы SOAP и RESTful.

Отличия

Основное различие между API и веб-сервисами заключается в том, что API предоставляет только необходимую информацию для выполнения задачи, в то время как веб-сервисы могут быть более сложными и иметь более широкий спектр функций.

Другое отличие между API и веб-сервисами заключается в способе доступа к ним. API может быть доступен только для определенных приложений, в то время как веб-сервисы могут быть доступны через интернет для любого приложения.

Веб-сервисы не могут работать без интернета, грубо говоря. А API могут. К примеру у вас на сервере есть два модуля независимых. Модуль кредитования и, пускай, модуль пользователей. Ваш проект - это дикий франкенштейн и так сложилось что у каждого из этих модулей свое API. Для взаимодействия между собой им не нужен интернет.

В целом, выбор между использованием API или веб-сервисов зависит от того, какие задачи необходимо выполнить и какие данные необходимо передать. Если требуется передать только небольшой объем информации между приложениями, то API может быть более подходящим выбором. Однако, если необходимо обрабатывать большие объемы данных или выполнить более сложные операции, то веб-сервисы могут быть более подходящим выбором.

Суммируем и упростим

  • Веб-сервис – это набор протоколов и стандартов с открытым исходным кодом, используемых для обмена данными между системами или приложениями, а API – это программный интерфейс, который позволяет двум приложениям взаимодействовать друг с другом без какого-либо участия пользователя.

  • Веб-сервис используется для REST, SOAP и XML-RPC для связи, в то время как API используется для любого стиля связи.

  • Веб-сервис поддерживает только протокол HTTP, тогда как API поддерживает протокол HTTP / HTTPS.

  • Все веб-сервисы являются API-интерфейсами, но все API-интерфейсы не являются веб-сервисами.

Рубрика вопрос-ответ

REST api это веб-сервисы?

Да.

Soap api это веб-сервисы?

Да.

WS это web services?

Не факт. В разработке и, соответственно, на собесах WS - это web socket. WebSocket - протокол для общения между клиентом и сервером, предоставляющий двухсторонне общение сверх протокола TCP.

Комментарии (4)


  1. OlegTar
    20.04.2023 10:21
    +1

    API - программный интерфейс приложения (Application Programming Interface), что значит приложение предоставляет набор методов, которые можно програмно (в коде) вызывать.

    А как это API отдаётся программисту - другой вопрос. Подключив определенные dll-ки в десктопном приложении, я могу вызывать методы, которые мне предоставляет операционная система Windows. К примеру, могу создать файл.

    Вебсервис - приложение, которое работает в сети, и оно может работать и c HTTPS

    API - это что-то абстрактное, договоренность (потому что интерфейс). Веб-сервис - это уже какая-то реализация какого-то API.


  1. saboteur_kiev
    20.04.2023 10:21

    Основное различие между API и веб-сервисами заключается в том, что API предоставляет только необходимую информацию для выполнения задачи, в то время как веб-сервисы могут быть более сложными и иметь более широкий спектр функций.

    Основное различие, что API это просто абстрактный интерфейс, который может использовать абсолютно любой протокол. А веб-сервис свои API скорее всего предоставляет по веб-протоколам (http/https в основном).

    Веб-сервис поддерживает только протокол HTTP, тогда как API поддерживает протокол HTTP / HTTPS.

    Серьезно? Выпускать в общим мир веб-сервис, который использует http? в 2023 году? В лучшем случае http используется в интранете, или например внутри кубера. И то.
    API может пользоваться просто сокетом и использовать свой собственный протокол на базе IP или вообще не сетевой. HTTP/HTTPS это как раз признак API от вебсервиса


  1. odinesnik
    20.04.2023 10:21

    Какой-то набор сумбурных мыслей, порой неверных
    Нулевая ценность статьи


  1. jobber_man
    20.04.2023 10:21

    Вебсервисы это просто одна из разновидностей API.

    Веб-сервисы не могут работать без интернета, грубо говоря.

    Ещё как могут. И, зачастую, только во внутренней среде и используется, не имея доступа из интернета.

    Веб-сервис – это набор протоколов и стандартов с открытым исходным кодом

    Или с закрытым кодом. Даже протоколы могут использоваться проприетарные и публично не доступные.

    Веб-сервис поддерживает только протокол HTTP

    Тот же SOAP от протокола связи не зависит. Может использовать любой протокол, который позволяет отправлять или получать сообщения. HTTP, SMTP, WebSockets, всякие очереди и шины сообщений и т.д. Да даже голубиную почту или ручную передачу папочек с документами между кабинетами, если возникнет такая необходимость.