Какие типы API вы знаете?

Ответ

Типы API классифицируются по архитектурному стилю и протоколу:

1. REST (Representational State Transfer)

  • Основа: HTTP-методы (GET, POST, PUT, DELETE, PATCH) и ресурсы (URI).
  • Формат данных: JSON или XML.
  • Ключевые принципы: Stateless, кэшируемость, единообразие интерфейса.
  • Пример запроса:
    GET /api/v1/users/123 HTTP/1.1
    Host: example.com

2. GraphQL

  • Основа: Единая конечная точка (endpoint) и язык запросов.
  • Преимущество: Клиент точно определяет структуру и объем требуемых данных, избегая over/under-fetching.
  • Пример запроса:
    query {
      user(id: 123) {
        name
        email
        posts(limit: 5) {
          title
        }
      }
    }

3. gRPC (Remote Procedure Call)

  • Основа: Вызов удаленных методов, как локальных функций. Использует протокол HTTP/2.
  • Контракты: Строгая типизация через файлы .proto (Protocol Buffers).
  • Применение: Высокопроизводительная межсервисная коммуникация в микросервисных архитектурах.

4. SOAP (Simple Object Access Protocol)

  • Основа: Строгий XML-протокол со встроенными стандартами безопасности (WS-Security) и транзакций.
  • Применение: Корпоративные и финансовые системы, где критична стандартизация и безопасность.

5. WebSocket

  • Основа: Постоянное двунаправленное соединение поверх TCP.
  • Применение: Приложения реального времени (чаты, биржевые тикеры, онлайн-игры).

Дополнительные концепции:

  • Webhook: Механизм обратного вызова (callback), когда сервер инициирует запрос к клиенту при наступлении события.
  • OpenAPI/Swagger: Стандарт для описания и документирования REST API.

Ответ 18+ 🔞

А, ну вот, опять про эти ваши API, блядь. Сидят умники, придумали на каждый чих отдельный протокол, а потом бегают и спорят, какой из них «более архитектурный», ёпта. Давайте разберемся без этой зауми, на пальцах.

1. REST — это как наш старый добрый почтальон Печкин.

  • Суть: Всё через HTTP, всё по полочкам. Хочешь получить что-то — GET, добавить — POST, поменять — PUT или PATCH, удалить — DELETE. Каждая штука — это ресурс со своим адресом (URI), ядрёна вошь.
  • Что внутри посылки: Обычно JSON, реже XML. Лёгкий, человекочитаемый.
  • Главное правило: Без состояния (stateless). Каждый запрос самодостаточен, сервер тебя не помнит. И кэшировать можно, что очень удобно.
  • Как это выглядит, когда ты просишь данные о пользователе:
    GET /api/v1/users/123 HTTP/1.1
    Host: example.com

    Всё, просто и понятно. «Дай-ка мне, дружок, пользователя под номером 123».

2. GraphQL — это хитрая жопа, которая хочет всё и сразу, но ровно столько, сколько надо.

  • Суть: Не носишься по разным адресам. Есть одна дверь (endpoint). Ты приходишь и говоришь на своём языке: «Мне нужен пользователь 123, но только его имя, почта и последние 5 постов с заголовками». И тебе приносят именно эту коробку, а не целый склад с мусором (over-fetching) и не полкоробки (under-fetching).
  • Пример такого заказа:
    query {
      user(id: 123) {
        name
        email
        posts(limit: 5) {
          title
        }
      }
    }

    Удобно, ёпта? Особенно для мобилок, где каждый байт на счету.

3. gRPC — это для серьёзных дядек в микросервисах, где скорость — всё.

  • Суть: Представь, что ты вызываешь функцию на другом сервере, как будто она у тебя локально. Никаких тебе JSON’ов с разбором полётов. Всё бинарное, компактное, летает на HTTP/2.
  • Контракты: Тут без бюрократии никуда. Сначала вы с коллегой-сервисом садитесь и строго, по-взрослому, прописываете в файле .proto, какие методы есть и какие данные туда-сюда ходят. Потом код генерируется автоматом. Никаких «ой, а я думал, тут поле userName, а не username». Жёсткая типизация, блядь. Для внутреннего общения сервисов — просто овердохуища.

4. SOAP — это ваш корпоративный динозавр в дорогом костюме.

  • Суть: Всё через XML. Но не просто XML, а такой, обвешанный кучей стандартов, протоколов безопасности (WS-Security) и прочей бюрократии. Очень строгий, очень надёжный, но и очень жирный и медленный.
  • Где живёт: В банках, в государственных конторах, в legacy-системах, где «так исторически сложилось». Если нужно, чтобы каждое письмо было заверено у нотариуса, запечатано в три конверта и отправлено с курьером — это SOAP.

5. WebSocket — это для тех, кто любит поболтать в реальном времени.

  • Суть: Не «спросил-ответил», а постоянная телефонная трубка. Соединение установил — и можешь слать сообщения туда-сюда, когда захочешь, без лишних церемоний.
  • Где пригодится: Чат в телеге, онлайн-игра, где позиции игроков обновляются каждую секунду, или биржевой тикер, который мигает цифрами. Всё, где важно «здесь и сейчас», а не «запрос-ответ».

А ещё есть парочка прикольных штук на подхвате:

  • Webhook: Это когда сервер тебе звонит сам. Представь: ты подписался на уведомления. Произошло событие (например, пришёл новый заказ) — и сервер, блядь, сам стучится к тебе в дверь (на твой URL) и говорит: «Эй, чувак, вот тебе данные, разбирайся». Удобно, не надо постоянно его дёргать и спрашивать «Ну что, есть что новенькое?».
  • OpenAPI/Swagger: Это, блин, святое. Документация для REST API, которая не просто текстом, а в виде интерактивной песочницы. Ты можешь посмотреть все методы, параметры и даже потыкать кнопочки, чтобы отправить тестовый запрос. Когда её нет, чувствуешь себя слепым котёнком в подвале. Когда есть — просто благодать, в рот меня чих-пых.

Вот и вся классификация. Выбирай по потребностям: хочешь просто и для всех — REST, нужна гибкость данных — GraphQL, гонишь за скоростью внутри системы — gRPC, работаешь с динозаврами — SOAP, делаешь что-то в реальном времени — WebSocket. Главное — не начинай религиозные войны на эту тему, а то пидары налетят.