System Design Space
Граф знанийНастройки

Обновлено: 1 июля 2026 г. в 16:50

Web API Design: The Missing Link (short summary)

сложный

Хороший Web API узнаётся не по красивому URL, а по тому, насколько мало скрытых знаний он требует от клиента.

Для реального проектирования глава показывает, как дизайн URI, типы ссылок, шаблоны URI и общие правила именования снижают когнитивную нагрузку на потребителей.

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

Практическая польза главы

Практика проектирования

Проектируйте URI и типы ссылок так, чтобы клиенту не приходилось знать внутренние правила сервера.

Качество решений

Делайте согласованность API измеримой через правила стиля и повторяемые проектные решения.

Аргументация на интервью

Показывайте, как удобство API влияет на стоимость интеграции и скорость выхода партнёров.

Анализ отказов

Снижайте риск путаницы у потребителей из-за непоследовательных названий и поведения.

Источник

Обзор книги

Оригинальный обзор Александра Поломодова на tellmeabout.tech

Перейти на сайт

Web API Design: The Missing Link

Авторы: Brian Mulloy
Издательство: Apigee (Google Cloud)
Объём: ~60 страниц

Практическое руководство Apigee по дизайну Web API: ссылки на ресурсы, семантика протокола HTTP, шаблоны URI, HATEOAS, URL-дизайн и удобство потребления API.

Оригинал

Красивый адрес сам по себе ничего не стоит, если клиенту неудобно с ним работать. Поэтому книга ставит во главу угла и сводит в один язык проектирования то, что обычно решают разрозненно: , , семантику протокола HTTP, предсказуемые адреса (URL) и реальное поведение .

Ключевые принципы

Связанная тема

Continuous API Management

Жизненный цикл API, управление контрактами и безопасная эволюция интерфейсов

Читать обзор

Отправная точка дизайна — не список адресов, а ресурсы, связи между ними и поведение клиента. Из этого вырастают четыре опоры:

REST и семантика протокола HTTP

API строится вокруг ресурсов, стандартных методов и понятной , а не вокруг случайных операций в стиле .

Ссылки вместо голых идентификаторов

Главная идея книги: возвращать , чтобы клиент видел, куда можно перейти дальше.

Протокол HTTP и стандарты

Дизайн опирается на протокол HTTP, RFC-документы и устойчивый , а не на локальные договорённости команды.

Стандарт

RFC 6570

Спецификация шаблонов URI для адресов с переменными

Перейти на сайт

Шаблоны URI

из RFC-документа 6570 помогают описывать адреса с переменными и сохранять предсказуемую структуру URL.

Хороший API становится проще не тогда, когда в него добавили ещё один удобный адрес, а когда из него убрали лишние исключения, скрытые правила и неоднозначные адреса.

Элементы дизайна API

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

Представление ресурсов

Поля, вложенность и формат должны быть стабильными для клиентов.

Заголовки протокола HTTP

задают кэширование, типы данных, авторизацию и служебное поведение запроса.

URL и шаблоны URI

Адреса и помогают выполнять запросы и находить ресурсы без скрытого знания внутренней модели.

Поведение клиентов

Клиенту важны , и устойчивость к новым полям в ответе (формат JSON): добавили поле — старый клиент не должен падать.

Дизайн URL

Практика

API Gateway

Маршрутизация, граничные политики и обработка запросов

Читать обзор

В REST-подходе адрес (URL) называет ресурс, который вернётся в ответе, а не алгоритм его получения. Как только в адрес проникает глагол или имя функции, клиент начинает кодировать у себя внутреннюю логику сервера — и любая её правка ломает интеграцию.

Хорошо

  • Существительные в URL
  • Множественное число для коллекций
  • Свойства в сегментах пути
  • Связи между ресурсами в URL

Рискованно

  • Глаголы в URL
  • Функции вроде convert или translate
  • Параметры запроса вместо сегментов пути
  • Непредсказуемые структуры адресов

Пример: два вида ссылок на сущность

Поиск по уникальному параметру:

/persons?email=john@example.com

Постоянная ссылка по UUID:

/persons/550e8400-e29b-41d4-a716-446655440000

Если email изменится, постоянная ссылка на ресурс останется прежней.

Дизайн URL для запросов

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

✓ Рекомендуется для связи ресурсов

/persons/{personId}/dogs

Отношение владельца и питомцев видно в URL.

✗ Рискованно для базовой связи

/search?type=Dog&owner={personId}

Связь спрятана в параметрах поиска.

Проверка простая: по адресу (URL) клиент должен понимать, какой ресурс он получит, а не угадывать внутренний способ вычисления ответа. Если для ответа на этот вопрос нужна документация, адрес уже проиграл.

Почему ссылки важны

Голый идентификатор сообщает клиенту, что связь существует, но молчит о том, как по ней пройти. Ссылка превращает ответ (формат JSON) из набора полей в навигационную модель: рядом с данными лежат и следующие допустимые переходы.

Голые идентификаторы

{
  "id": "123",
  "name": "Rex",
  "ownerId": "456"
}

Ссылки на ресурсы

{
  "id": "123",
  "name": "Rex",
  "owner": "/persons/456"
}

Такой ответ снижает объём скрытых договорённостей: не нужно заранее знать все шаблоны URI, чтобы перейти к связанному ресурсу.

Содержание книги

Главы идут от базовой модели ресурсов к темам, где цена ошибки выше всего: версионирование, гипермедийная навигация (HATEOAS), кэширование и итоговые рекомендации по Web API.

1.Введение
2.Дизайн представлений
3.Дизайн URL
4.URL для запросов
5.Пагинация
6.Обработка ошибок
7.Действия и функции
8.Аутентификация
9.Версионирование
10.HATEOAS
11.Кэширование
12.Итоги

Главный вывод

Протокол HTTP хорошо задаёт базовую семантику операций создания, чтения, изменения и удаления (CRUD), но не решает за команду, как выражать запросы к данным, связи между ресурсами и правила навигации. Именно поэтому дизайн адресов (URL) и представлений остаётся отдельной инженерной работой — протокол даёт алфавит, а язык интерфейса вы пишете сами.

Связанные главы

  • Continuous API Management (short summary) - Операционная модель API-продукта: жизненный цикл, управление контрактами и безопасная эволюция интерфейсов.
  • API Design Patterns (short summary) - Паттерны контрактного дизайна и правила обратной совместимости для долгоживущих API.
  • API для людей: как сделать интерфейс понятным - Клиентский взгляд на API: понятность, предсказуемость и снижение порога входа для разработчиков.
  • API Gateway - Практическая реализация маршрутизации, политик на границе системы и контроля трафика для Web API.
  • Паттерны межсервисной коммуникации - Как качество API-контрактов влияет на устойчивость и стоимость межсервисных интеграций.
  • API Security Patterns - Безопасность Web API: аутентификация, авторизация, модели угроз и применение политик доступа.
  • Learning GraphQL (short summary) - Сравнение REST-ориентированного дизайна с GraphQL-подходом и компромиссами клиентского API-слоя.

Где найти книгу

Чтобы отмечать прохождение, включи трекинг в Настройки