В зависимости от задач требуются разные API. В одном случае важнее скорость работы, в других же – надежность, устойчивость к сбоям связи и т.д. Из-за этого существует несколько типов интерфейса, учитывающих разнообразие требований.
REST APIНаиболее распространенным вариантом является REST API. По сути, это и есть набор принципов и правил, по которым функционирует система обмена через интерфейс. Например, подразумевается, что любое взаимодействие происходит по принципу «клиент-сервер», когда каждый запрос является самодостаточным. Общение предполагается при помощи стандартных методов HTTP вроде GET, POST, PUT, DELETE.
Преимущества REST API:
- Простота освоения функционала.
- Стандартизированные методы взаимодействия.
- Хорошая совместимость с веб-технологиями.
- Высокая масштабируемость.
Из минусов стоит отметить, что использование в REST API текстовых форматов перегружает сеть (по сравнению с бинарными). В системе не предусмотрены встроенные механизмы защиты, поэтому разработчикам приходится самим внедрять средства аутентификации/авторизации. Чуть добавляет сложностей отсутствие строгой спецификации. Программисты вынуждены реализовывать API на основании требований конкретных проектов.
SOAP APIМенее популярен SOAP, Simple Object Access Protocol. Причина объяснима: передаваемые данные всегда должны оформляться в соответствии со спецификацией языка XML. Иначе сервер откажется от взаимодействия с выдачей ответа в виде ошибки. Здесь большое внимание уделяется безопасности, но за счет усложнения процедуры запросов. Систему используют в банковских приложениях, там, где происходит обмен коммерческими, персональными данными.
GraphQLСледующий тип API – GraphQL, представляет собой целый язык запросов. Он сложен, зато при грамотном применении способен, например, при помощи одного обращения получить сведения из нескольких источников одновременно. «Чистому» REST такое недоступно. Гибкость технологии проявляется и в возможности избегать передачи лишних данных.
Правда, с безопасностью здесь столь же печально, как в «оригинальной» системе. Разработчикам приходится самостоятельно думать, как защитить канал передачи сведений от хакерских атак. Еще стоит отметить относительную сложность настройки, небольшое количество готовых библиотек, из-за чего программисты вынуждены сами решать вопросы внедрения.
RPC (qRPC, tRPC)Протокол RPC – это решение, позволяющее вызывать функции, размещенные на удаленном хосте, как будто бы они выполняются локально. Такой подход интересен, например, для существенного сокращения кода, роста производительности независимо от мощности клиента.
Существует несколько модификаций: gRPC разработана Google, tRPC «заточен» на использование языка TypeScript. Чтобы освоить эту технологию, придется разобраться в довольно сложном языке описания интерфейсов (IDL, Interface Definition Language).
Web APIВеб-API – это разновидность интерфейса для программирования приложений, адаптированных под запуск в веб-браузере. Нередко кодинг ограничивается только клиентской машиной, хотя есть возможность работать и с серверной частью продуктов. Типовой пример: расширения браузеров для увеличения их функционала.