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

Разработка программного обеспечения как правило сводится к подходу ориентированному на данные. Практически все API строятся вокруг источников данных (как правило СУБД) и носят ресурсо-ориентированный характер, существуют исключения в виде API обеспечивающих работу системы, как правило это хорошо стандартизованная часть, которая тиражируется из проекта в проект, в рамках обеспечивающих функций рассматриваются вопросы управления доступом к ресурсам и тому подобные задачи.

API с позиции состояний:

API c позиции стиля работы:

Общее описание

  1. Наиболее распространено семантическое версионирование MAJOR.MINOR.PATH-LABEL+MetaInfo MAJOR - обратно несовместимые изменения MINOR - обратно-совместимые изменения PATCH - локальные изменения
  2. API должны учитывать совместимость:
    • по версии клиента (должен поддерживать все клиенты предыдущего API)
    • по версии сервера (должен работать на серверах поддерживающих предыдущий API)
    • по версии протокола (должен поддерживать все протоколы, что и предыдущий API) Если хотя бы одно условие нарушается, увеличивается MAJOR версия.

Версионирование

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

Моменты на которые обычно следует обратить внимание:

При разработке API важно предусмотреть возможность горизонтального масштабирования, для этого обязательно на стадии раннего проектирования предусмотреть точки подключения мониторинга (систем автоматизированного управления).

Наиболее часто мониторинг реализуется:

Основные способы обеспечения безопасности:

Аутентификация:

Авторизация: