Код-ревью Senior Обмены и интеграции обновлено
Ревью вызова внешнего API
Вопрос
Регламентное задание загружает курсы валют из внешнего API. Найдите проблемы.
Соединение = Новый HTTPСоединение("api.rates.example", 80);
Запрос = Новый HTTPЗапрос("/rates?token=SECRET123");
Ответ = Соединение.Получить(Запрос);
Данные = ПрочитатьJSON(ЧтениеИзСтроки(Ответ.ПолучитьТелоКакСтроку()));
НачатьТранзакцию();
Для Каждого Курс Из Данные.rates Цикл
ЗаписатьКурс(Курс);
КонецЦикла;
ЗафиксироватьТранзакцию();
Коротко
Внешние вызовы: HTTPS с таймаутом, секреты вне кода, проверка кода ответа и формата, логирование, транзакция по стандартному шаблону, и запись курсов только после успешного разбора.
Что должен найти ревьюер
- Безопасностьстрока 1HTTP без TLS и без таймаута: токен и данные идут открыто, а зависший сервис подвесит задание.
- Безопасностьстрока 2Токен зашит в код и передаётся в URL (попадёт в логи). Хранить в безопасном хранилище (БСП) и передавать в заголовке.
- Ошибкастрока 3Не проверяется Ответ.КодСостояния: при 500 или 401 код попытается разобрать текст ошибки как курсы.
- Ошибкастрока 5Транзакция без Попытка и ОтменитьТранзакцию: при ошибке записи транзакция останется открытой.
Разбор
Внешние вызовы: HTTPS с таймаутом, секреты вне кода, проверка кода ответа и формата, логирование, транзакция по стандартному шаблону, и запись курсов только после успешного разбора.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.