Содержимое
Редко попадаются хорошие статьи на русском — то конкретики нет, то уровень не выдержан, то вообще творчество копирайтера или "редактора блога", где все термины перепутаны, "волны перекатывались через мол и падали вниз стремительным домкратом". 80% статей я вообще не могу читать, такая там чушь. Читаю поэтому в основном стандарты, первоисточники и научные статьи. И вот на этом фоне встречаются настоящие жемчужины, грех про них не рассказать. Вот, например, статья Яндекса про идемпотентность вызовов API на примере приложения такси. Тут всё прекрасно: и сторителлинг, и погружение в нюансы на понятном примере, и упаковка разных тем в одной статье. Потому что это она только называется "об идемпотентности" (то есть — об идентичных ответах API при нескольких идентичных вызовах), а на самом деле там говорится: ✅ про собственно идемпотентность ✅ про возможные ошибки связи (сервер не отвечал, сервер тормозил и случился таймаут, из-за разрыва связи не пришел ответ сервера и т.п.) ✅ про гонку параллельных запросов к БД ✅ про коды ошибок http (для чего применять не только 200, 403 и 404, но и другие, например, 410) ✅ про дубли (ошибка) и двойные заказы с одного адреса (нормальное поведение) ✅ про проксирование в запросах (и как это связано с идемпотентностью) ✅ про обработку таймаутов сервера и БД ✅ про то, как сделать POST идемпотентным и при чем тут токены ✅ про использование пользовательских сценариев для проектирования и проверки логики API ✅ про подсматривание хороших решений в других API (насмотренность при проектировании API очень важна!) ✅ про идемпотентность операций изменения и удаления ✅ про взаимодействие с внешними сервисами ✅ и даже немного про очереди сообщений и стратегии доставки ("как минимум один раз" или "как максимум один раз") В общем, не статья, а клад! Рекомендую её теперь всем участникам нашего курса по интеграциям, в качестве примера — на что обращать внимание при проектировании интеграций и что из этого мог бы продумать аналитик, чтобы всё это предусмотреть заранее, а не узнавать из обращений в службу поддержки.