Проектирование REST API / OpenAPI (TypeSpec) / Кеширование / Денис Семененко / #17
В этом выпуске мы с Денисом Семененко, Principal Software Engineer в DocGo, обсуждаем разработку REST API, спецификации, преимущества и недостатки инструментов типа TypeBox и TypeSpec, и как понимание всех этих аспектов влияет на процесс проектирования. ✅ Подписывайтесь на канал «Организованное программирование» в Telegram https://ttttt.me/orgprog – Список подкаст-платформ (Apple Podcast, Google Podcast, Spotify, Яндекс.Музыка и другие) https://podcast.ru/1734325321 Мы затронем исторический контекст REST, его ограничения и концепцию HATEOAS для построения гибких интерфейсов. Также рассмотрим, как REST и RPC решают схожие задачи и чем отличаются JSON API и GraphQL, поговорим про OpenAPI и Async API, стандарты обработки ошибок, перемещение логики на промежуточные серверы и разделение ответственности между клиентом и сервером. В общем в этом эпизоде очень много о программировании и архитектуре. Полезные ссылки: – Твиттер Дениса: https://twitter.com/denblackstache – Тред про REST API: https://x.com/mokevnin/status/1824512290793853328 – Hypermedia Factors. Факторы для сравнения разных message formats между собой http://amundsen.com/hypermedia/hfactor/ – AsyncAPI https://www.asyncapi.com/ – OpenAPI Tools https://openapi.tools/ – Книга Сергея Константинова https://twirl.github.io/The-API-Book/API.en.html 00:00 Обсуждение REST и API 08:55 Инструменты и спецификации для API 12:44 Инновации в программировании с Closure 20:09 TypeSpec: Будущее описания API 24:47 Сравнение подходов к описанию API 29:54 Сравнение OpenAPI и альтернативных решений 34:36 Книга Сергея Константинова и мифология REST 39:11 Понимание hateOS и его значение 42:07 Гипермедиа и его роль в вебе 44:31 Динамическое построение интерфейсов 46:54 Проблемы с реализацией API 48:54 Преимущества REST по сравнению с RPC 51:18 Перемещение логики на промежуточный сервер 54:33 Стандарты обработки ошибок в API 59:45 Сравнение JSON API и GraphQL 01:04:31 Проблемы упаковки данных в JSON 01:07:41 Форматы сообщений и обратная совместимость 01:10:42 Семантический веб и его влияние на API 01:12:56 Гибкое выборочное представление контента 01:14:53 Разнообразие форматов API и их применение 01:17:05 Стандарты API и их эволюция 01:20:40 Выбор технологий для построения API 01:23:52 Frontend и API: как строить взаимодействие 01:25:49 ГрафQL: хайп и реальность 01:29:11 Проблемы и ограничения GraphQL 01:29:42 Оптимизация REST API и его преимущества 01:30:12 Знакомство с Ransack и его концепцией 01:31:14 Фильтрация данных и ее сложности 01:32:53 Преимущества Ransack в фильтрации 01:35:34 Использование Doreos и Grape для API 01:37:14 Валидация данных и ее уровни 01:39:35 Проектирование микросервисов и Domain Driven Design