Коротко: API — интерфейс приложения для доступа с других сервисов по HTTP; REST опирается на возможности HTTP, RPC — на вызов удалённых процедур.

API — это программный интерфейс приложения: набор функций, к которым можно обратиться с другого сервиса по HTTP(S) и получить данные или выполнить действие. REST и RPC — два подхода к проектированию API: REST опирается на возможности HTTP, RPC — на вызов удалённых процедур. Разберём, что это и чем отличается, на простом примере.

API, REST, RPC и куча других страшных слов, которые так любят на собеседованиях. Что они означают и при чём тут API?

Представим, что у нас несколько сайтов: интернет-магазин (продажи), система складского учёта и сайт обработки заказов с клиентской базой. Сейчас порядка 40 человек изо дня в день заполняют Excel и шлют друг другу голубиной почтой по email, чтобы перенести данные с одного сайта на другой, иногда несколько раз в день. Вся согласованность и валидность данных держится на тёте Дусе из 7-го подъезда, которая каждый день заполняет одни эксельки из других...

И в один прекрасный момент тётя Дуся ошиблась на полтора миллиона рублей, просто перепутав эксельки для разных систем. Как теперь решать задачу передачи данных между системами? Тётя Дуся глотает валидол и боится выходить в офис... И вот нам спускают задачу: интегрировать все сервисы между собой и настроить обмен данными — естественно, через API.

Что такое API и интеграция?

Интеграция — это готовый результат разработки ПО, позволяющий двум сайтам обмениваться информацией.

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

Чтобы сайты удобно взаимодействовали, нужен удобный протокол передачи данных. А данные в каком формате? Тоже вопрос — JSON, XML или CSV?

Чем отличаются REST и RPC?

REST — подход к проектированию API, основанный на принципах HTTP. Он делает акцент на простых форматах данных, использовании URL для идентификации ресурсов и возможностях HTTP для управления кэшем, аутентификации и согласования типа контента. API, спроектированный по REST, называют RESTful.

RPC (Remote Procedure Call) — класс технологий, позволяющих программам вызывать функции или процедуры в другом адресном пространстве. Два самых ходовых формата — XML и JSON.

Если совсем коротко: REST настаивает на использовании возможностей HTTP, а RPC — нет. Например:

Таблица сравнения REST и RPC для операций addProduct, getProduct, deleteProduct: разные URL, методы и тело запроса

Иными словами, чтобы называть своё API RESTful, нужно строже придерживаться правил HTTP, чем в RPC.

Лично мне больше нравится RPC: он нативно понятнее разработчикам, которые интегрируются с API. Не люблю, когда вендор API заставляет формировать кучу заголовков и писать для каждого метода отдельные классы, тогда как с RPC всё делается быстро — пусть местами и не так красиво. Поэтому мне ближе RPC.

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

Читайте также: как создать своё API на Symfony 6. Если нужно спроектировать API или интеграцию между системами — помогу на консультации.