Комментарии 4
Фокусы МВД. Подтверждение ИНН (от ФНС) через СМЭВ как работало, так и работает. Та сбоев не было.
Здорово что вы умеете отличать 403 от 503. Ну и что?
} else if status.as_u16() == 403
|| status.as_u16() == 423
|| status.as_u16() == 429
|| status.as_u16() == 503
{
let reason_kind = UnavailableReason::from_http_status(
status.as_u16(),
res.headers().contains_key(reqwest::header::RETRY_AFTER),
); // ок, вызывается описанная в статье функция
// ...
return Err(SmevError::Unavailable {
// и форматируется в строку, упс
reason: format!("{reason_kind:?} ({status})"),
});
Дублирующие запросы при любой тарификации выливаются в дополнительные расходы.
request_fingerprintв крейте даёт детерминированный BLAKE3-хеш от входящих байтов. Один и тот же запрос, один и тот же хеш.Можно использовать как ключ кеша:
Логика простая: один реальный запрос при первичной проверке, повторные сессии берутся из кеша. Это быстро окупится, когда появится тариф.
Желание сэкономить, организовав у себя кэш ответов на запросы, индексированный хэшем данных запроса, вполне понятно.
Непонятно, кто будет отвечать, если кэш ответов вернёт старый статус некоего паспорта как валидного, в то время как МВД его у себя уже заблокировало, и это всплывёт, например, в суде. У СМЭВ ведь нет функционала оповещения о невалидности Вашего локального кэша.

Ночь с 14 на 15 апреля: мой личный ответ на отключение СМЭВ