Код-ревью Middle Обмены и интеграции обновлено
Ревью обработчика HTTP-сервиса
Вопрос
Перед вами обработчик POST /orders. Найдите проблемы.
Функция ЗаказыPOST(Запрос)
Текст = Запрос.ПолучитьТелоКакСтроку();
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(Текст);
Данные = ПрочитатьJSON(Чтение);
Док = Документы.Заказ.СоздатьДокумент();
Док.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Данные.client);
Док.Записать(РежимЗаписиДокумента.Проведение);
Ответ = Новый HTTPСервисОтвет(200);
Возврат Ответ;
КонецФункции
Коротко
HTTP-сервис это граница системы: всё, что пришло извне, проверяется, ошибки возвращаются понятными кодами, операции создания идемпотентны, а ответ содержит результат.
Что должен найти ревьюер
- Ошибкастрока 5Нет обработки ошибок: при битом JSON сервис вернёт 500 с текстом исключения. Нужны Попытка и ответ 400 с описанием.
- Ошибкастрока 6Нет проверки внешнего идентификатора: повтор запроса создаст дубль заказа.
- Ошибкастрока 7Поиск контрагента по наименованию ненадёжен; если не найден, запишется пустой контрагент. Искать по ИНН или внешнему ID и возвращать ошибку.
- Ошибкастрока 8Проведение может не пройти (остатки, проверки), исключение не обработано. И сразу проводить заказ из внешней системы не всегда правильно.
- Стильстрока 9Для создания ресурса уместен код 201 и тело с номером или идентификатором документа, иначе сайт не узнает, что создано.
Разбор
HTTP-сервис это граница системы: всё, что пришло извне, проверяется, ошибки возвращаются понятными кодами, операции создания идемпотентны, а ответ содержит результат.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.