Обновить
256K+

Проектирование API *

О создании API

36,86
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Как настроить кастомную авторизацию в FESB и сохранить стандартный заголовок

Время на прочтение6 мин
Охват и читатели5.7K

При проектировании REST-интеграций часто возникает конфликт заголовков, когда и целевая система, и шина данных требуют дефолтный Authorization. В этой статье мы пошагово разберем, как перенастроить FESB на анализ кастомного заголовка для отдельной группы методов. Вы узнаете, как отключить стандартную проверку, распарсить Base64 с помощью Groovy и вернуть корректный HTTP-ответ.

Читать далее

Новости

Разобрал фишинг MAX, собрал в нём своего AI-секретаря. Гайд: Claw Bot + MCP

Время на прочтение20 мин
Охват и читатели8.6K

Месяц назад мне в личку прислали фишинговую ссылку под MAX. Разобрал её, попутно вынес устройство протокола: опкоды, формат фрейма, флаги push-подписки, антибот-эвристики. Через две недели применил это знание к мирной задаче: собрал в том же мессенджере своего AI-секретаря, который пишет первым коллегам, бронирует столики и ведёт переписки до результата.

Всё через User API без регистрации, MCP-сервер на семь тулов, рабочий репозиторий с граблями. Делюсь инструкцией.

Читать далее

«Особое мнение» по каждому SKU: три AI-модели вместо BI-правил

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6.6K

Мой знакомый Николай держит на Ozon магазин постельного белья. Со стороны всё нормально: оборот есть, товар продаётся, кабинет не пустует. А денег в конце месяца — нет. Не «мало», а непонятно куда они делись.

Я стал разбираться — и понял, что это не его частная беда. Полный P&L по каждому товару никто не считает: на каталоге в 500–2000 позиций это часы в неделю. Товар крутится в топе по обороту — но оборот ничего не говорит о марже: после возвратов и рекламы он годами уходит в минус, в полной слепой зоне. Инструментов на рынке хватает, но почти все просто показывают ещё одну P&L-таблицу — много цифр, красиво, и ровно ноль ответа на вопрос «и что мне теперь с этим делать».

Так появился SKUmind — сервис, который сводит прибыль по каждому SKU и говорит, что с ней делать. Под катом — почему я выкинул привычную для BI логику на правилах, как собрал консилиум из трёх AI-моделей разных вендоров с арбитратором, как реверс-инжинирил Ozon API двумя параллельными сессиями Claude и почему ревью кода теперь съедает 60–70% времени.

Читать далее

Гайд как тестировать внешние API в Python: от DI-мока до настоящего HTTP-сервера

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели6.8K

Почти каждый сервис, который мы сегодня пишем, ходит куда-то наружу — платёжный шлюз, биллинг, чужой публичный API. И каждый раз, когда садимся писать тесты на этот код, упираемся в один и тот же вопрос: как протестировать клиента, не привлекая внимания санитаров выходя в реальный мир?

Эта статья про то, как выбирать инструмент под эту задачу. Не абстрактно — на одном маленьком, но гордом настоящем сервисе catfact-demo-service, в tests/ которого рядом лежат пять способов протестировать одну и ту же интеграцию. К концу мы их сравним и аргументированно выберем тот, который оставили бы в production-проекте.

Читать далее

Wayback Machine как архив IDOR: как временные ссылки перестали быть временными

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели9.7K

В марте 2026 многие обсуждали ситуацию с доступом к изображениям из ЛС мессенджера MAX по ссылкам, сохранённым через WebArchive. Тогда же многих не устроил ответ компании.

К сожалению, ситуация хуже, чем кажется. Т.к. проблемы не видят не только в MAX, но и в других компаниях (столкнулся с этим, оповещая компании о похожих проблемах). В статье я расскажу, почему считаю ситуацию — проблемой для всех: пользователей, компании, багхантеров. И как связка «WebArchive + IDOR» может стать бомбы замедленного действия для компании.
Более того, эта ситуация — наглядный пример, как отлаженный механизм повышения безопасной разработки (что не найдут внутренние безопасники компании — отловят багхантеры) иногда даёт сбой.

Читать далее

Notion + RAG + Telegram: архитектура AI-копирайтера для сети ресторанов

Время на прочтение8 мин
Охват и читатели8.5K

В таком сценарии копирайтеру недостаточно просто писать тексты. Ему нужно помнить факты о каждом заведении: часы работы, фирменные блюда, формат кухни, имена шеф-поваров, особенности интерьера, правила коммуникации, ограничения по формулировкам и стиль бренда. Если ресторанов девять, эта задача быстро перестаёт быть только творческой и превращается в задачу управления знаниями.

У заказчика была именно такая проблема: сеть ресторанов по России, у каждого заведения отдельная концепция и свой стиль общения с гостями. Большая часть ресурсов уходила на ежедневную текстовую работу: описания ресторанов, переводы на разные языки, пресс-релизы, рассылки, описания блюд, мероприятий, посты для социальных сетей и тексты в Tone of Voice каждого бренда.

Задача заключалась не в том, чтобы заменить редактора, а в том, чтобы вынести рутинную часть генерации текстов в AI-систему. Один-два редактора должны были управлять контентом всей сети: ставить задачи, получать черновики, проверять факты, корректировать стиль и доводить материалы до публикации.

Читать далее

Production‑стек для мессенджера на 10к пользователей: FastAPI, SQLite в проде и почему монолит

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели9.6K

Это восьмая статья из моей серии про инженерные решения в ONEMIX. До этого было про клиентскую часть мессенджера: кэш сообщений, E2E, WebRTC звонки, Electron, outbox‑паттерн. Параллельно про AI‑агента Лиру и мнение про вайб‑кодинг.

Сегодня про серверную сторону. Backend ONEMIX — это один файл main.py на 19 603 строки, 379 эндпоинтов, FastAPI + SQLite, держит мессенджер с регистрацией через SMS, звонками через LiveKit, E2E через Double Ratchet, push‑нотификациями на iOS и Android. Этот файл я пишу больше года. За это время он эволюционировал из прототипа на 800 строк в production монолит.

В статье разберу почему стек именно такой, какие решения оказались правильными, какие я бы поменял если бы начинал сейчас, и где у этого подхода границы применимости.

Сразу важная оговорка. У меня не было требования держать 100к одновременных пользователей или 10к RPS. Это бэкенд под мобильное приложение с трафиком который для соло‑разработчика разумно поддерживать одному. Если у вас задачи другого масштаба, мой опыт может не подойти.

Читать далее

Как мы довели поиск товаров по изображению до 98% совпадений: FastAPI, DINOv2, Qdrant и поиск на фото полки

Время на прочтение7 мин
Охват и читатели7.7K

Поиск товара по изображению кажется простой задачей — ровно до момента, пока не сталкиваешься с реальным каталогом.

В теории все выглядит аккуратно: берем фото, считаем embedding, ищем ближайшие вектора, возвращаем совпадения. На практике начинаются нюансы: у товара несколько изображений, ракурсы отличаются, фон мешает, каталог обновляется постоянно, а бизнес ждет не исследовательский прототип, а сервис, который можно поставить в production.

С вами старший программист в Fix Price Константин Репин. И в этом материале разберу, как мы строили сервис визуального поиска товаров, какие инженерные решения реально повлияли на качество и почему текущий результат в 98% совпадений получился не из-за одной удачной модели, а из-за правильно собранного пайплайна.

Читать далее

Production MTProto user-бот на FastAPI + Telethon: WARP для обхода DPI и 5 граблей с Telegram

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели14K

В большинстве туториалов по Telegram-ботам всё начинается с одного куска кода: получили токен у @BotFather, поставили python-telegram-bot или aiogram, написали хендлер, deploy. Это Bot API. И в 90% задач этого хватает.

А потом приходит задача которую Bot API не закрывает в принципе: программно создать супергруппу под конкретный проект и добавить туда нужных людей по @username, и сделать это десятки раз в день. Bot API такое не умеет даже теоретически - метода «создать группу» там нет, метода «добавить юзера в группу» тоже. Лезете в полную документацию Telegram API искать обход, упираетесь в раздел  channels.createChannel  /  channels.inviteToChannel под MTProto, и начинается совсем другая история - не Bot API, а user-бот через telethon.

В этой статье разбираю как мы сделали production MTProto user-бот на FastAPI + Telethon. Под капотом: Cloudflare WARP для обхода DPI (без него с российского VPS просто не подключиться), Singleton-клиент с keepalive, in-memory cache resolve-юзеров, и 5 ограничений Telegram которые знают только те кто лез туда ногами. Реальный production-сервис у клиента в нише строительства/монтажа, обслуживает связку Planfix → Telegram-группы под каждый проект.

Сервис написан на Python 3.11. Стек: Telethon 1.43.2, FastAPI 0.136.1, Uvicorn 0.46.0, Pydantic 2.13.4. На VPS под systemd, наружу через Cloudflare Tunnel. Вызывается из n8n через HTTP-ноду.

Читать далее

n8n + мессенджер MAX: почему я отказался от community-ноды и перешел на «чистый» HTTP Request

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели8.5K

Рассказываю, почему в B2B-проектах опасно полагаться на community-ноды и как я перевел интеграцию с мессенджером MAX на стандартный HTTP Request. Фиксим «ловушку» Chat ID (404), требование плоской структуры JSON (400) и ошибки протокола ENOTFOUND. Внутри — готовый конфиг для безопасной отправки сообщений через Header Auth и способ упаковки спецсимволов через Expression-объекты без поломки парсинга.

Читать далее

Логин через Telegram по-новому: разбираем OIDC-флоу oauth.telegram.org и собираем его на Python

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели10K

Telegram теперь полноценный OpenID-провайдер: oauth.telegram.org, JWKS, JWT, claims. Туториалы на GitHub при этом массово показывают старый виджет с HMAC от bot-token и /setdomain в BotFather. Я разобрался с новым флоу и собрал PoC на Python — рассказываю, как устроен обмен между фронтом, Telegram и бэком, чем Login library через telegram-login.js отличается от manual OIDC code flow с PKCE, что настраивать в BotFather (спойлер: не в чате, а в его mini-app), как протестировать локально через ngrok, и какая проверка id_token нужна вместо ручного HMAC.

Читать далее

Коды состояния HTTP: всё, что нужно знать бэкенд-разработчику

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели8.7K

Всем привет! Я решил сделать для вас шпаргалку с основными статус-кодами протокола HTTP/HTTPS. Для более подробного погружения в тему рекомендую прочитать RFC 9110, который регламентирует статус коды и весь протокол.

Читать далее

Невидимый syntax error в PostgreSQL: как одна строка SQL съела полтора дня дебага

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели8.5K

Хочу рассказать про баг, который я искал полтора дня и который оказался опечаткой длиной в одну инструкцию. Если коротко: PostgreSQL (16.4 в моём случае, но воспроизводится начиная с 12-й) не разрешает UNION ALL сразу после ORDER BY ... LIMIT N без круглых скобок. И самое неприятное - ошибку об этом я узнал последним, потому что между моим SQL-запросом и логами стояло пять промежуточных слоёв, каждый из которых её по-своему проглотил.

Расскажу как нашёл, как фиксил, и что в итоге добавил в pre-deploy чек-лист.

Читать далее

Ближайшие события

TeachTrack: NestJS + Telegram‑бот напоминаний + РКН — как я в одиночку собрал CRM для частных репетиторов

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели11K

Месяц назад я выложил на Хабр статью про TripTrack — GPS‑трекер для машины на iOS, который собрал будучи бэкендером без опыта в Swift. Статья неожиданно набрала 7.4К (на данный момент написания) просмотров. Но, мне посчастливилось поработать по своей специальности, не только под IOS‑приложения, а под NestJS бекенд.

Параллельно с TripTrack я писал второй проект — на этот раз ровно в зоне комфорта (NestJS + PostgreSQL), и это позволило развернуться по‑серьёзному: транзакционный outbox для идемпотентных отправок в Telegram, single‑use invite‑токены с защитой от enumeration, timezone‑aware scheduler, partial unique indexes — словом, всё то, что для бэкендера интересно само по себе.

Под катом — про то, как устроен Telegram‑бот напоминаний в TeachTrack, что я понял про pessimistic_write и FOR UPDATE SKIP LOCKED, зачем pet‑проекту с реальными пользователями из РФ нужно уведомление в РКН, и почему холодный аутрич преподавателям английского научил меня важной вещи про русский менталитет.

Читать далее

Создание чат-бота в портале Битрикс24 с помощью AI-агентов

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели8.7K

5-я статья из цикла туториалов о кастомизации своего бизнес-портала в Битрикс24.

Сегодня возьмём наш шаблонный репозиторий для AI-разработки и сделаем на его основе чат-бота. Боту можно написать в мессенджере и научить его делать разные полезные вещи: давать информацию по сделкам, задачам и другим деталям бизнеса. 

Ещё бот может обращаться к другим программам по API и возвращать данные оттуда, например курсы акций и облигаций.

Что есть в других статьях на сегодня: 
1. Пишем первое приложение с AI-стартером, чтобы видеть прибыли и убытки
2. Добавляем в бизнес-портал Битрикс24 роботов для автоматизации
3. Что даёт воспроизводимая среда разработки и как развернуть контейнеры на VPS 
4. Анализ и модернизация коннектора баз данных с помощью AI-агентов
5. Создание чат-бота в портале Битрикс24 с помощью AI-агентов (вы здесь)

Читать далее

Migration toolkit для 1С Битрикс: переносим аккаунт между инстансами через crm.*.list + идемпотентность по ORIGINATOR_ID

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели9.5K

В предыдущей статье (как отдавать лиды из Next.js в 1С Битрикс) я показывал outbound‑интеграцию: сайт пишет лид к себе в PostgreSQL, через after() отдаёт его в Битрикс, в строку лида подкладывает bitrix_id. Архитектура работает, пока Битрикс один.

Но в реальной жизни Битрикс редко остаётся один. Сценарии, в которых нужна полноценная миграция между инстансами, я ловил на проектах четыре раза за последний год:

Читать далее

Мифы про REST API. Часть 3

Время на прочтение5 мин
Охват и читатели8.3K

Привет всем, на связи снова Дарья Борисова, системный аналитик из ПСБ. Продолжаю развеивать мифы о REST API. Если вы пропустили первую и вторую часть, то советую заглянуть туда: ведь мы уже разобрали некоторые заблуждения о природе REST. Сегодня мы разберем нюансы транспортных и бизнес-ошибок, погрузимся в кеширование и узнаем, действительно ли REST должен быть прокси для базы данных.

Переходите под кат, начинаем!

Читать далее

180к MAU, 43% детей и „филькина грамота“: как я искал уязвимости, а нашёл бизнес-схему

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели11K

Представьте себе «Матрицу» – сервис, где создана иллюзия безопасности путем обмана пользователей. Через юридидические документы, которые должны защищать пользователей, но по факту все наоборот: они защищают создателя сервиса.

В «Матрице» обещают данные на «защищенных серверах», но хранят их в публичном облаке. Пишут «только для совершеннолетних», но почти половина анкет – дети и подростки.

История про то, как багхантинг перерастает в расследование о халатности в обращении с персональными данными юзеров.

12340 анкет, 24 тысячи чужих файлов на 7 GB – все оказалось доступным без единого взлома.

Результат – весьма неожиданный…

Пройти через зеркало

Новый Grok 4.3: как использовать без подписки за 300$ и подключить выгодный API нейросети для бизнеса

Время на прочтение2 мин
Охват и читатели14K

Grok 4.3 от xAI вышел в апреле 2026 года и пока остаётся в стадии бета-версии — протестировать его могут только подписчики SuperGrok Heavy за 300 долларов в месяц.

В чём Grok 4.3 опережает ChatGPT-5.5 и Claude Opus 4.7? Как использовать Grok 4.3 без подписки? И как получить дешёвые токены по API из России, без VPN и сложных настроек? Разберёмся.

Узнать больше

Как Claude и Ollama решили мою вечную проблему на Ozon

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели23K

Ozon в один день заблокировал почти весь мой ассортимент из-за отсутствия сертификатов качества – около 1000 SKU. Ручная загрузка сертификатов обошлась бы мне в несколько месяцев рутины и ада.

Поэтому единственным возможным решением оказалось распознание текста на картинке через ИИ и массовая загрузка сертификатов/привязка товаров по API в Ozon Seller. 

Итак, как же решить эту задачу без знания кода?

Читать далее
1
23 ...