Обновить
256K+

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

О создании API

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

Хватит дублировать валидацию в Django: как я подружил Pydantic с ORM и перестал страдать

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

Представь: ты пишешь научный сервис. Есть модель исследователя, у которой h_index не может быть отрицательным. Ты, как добросовестный разработчик, описываешь это правило в Pydantic-схеме красиво, строго, типизированно. А потом начинается ад: те же самые «не может быть отрицательным» ты вынужден повторять в DRF-сериализаторе, в Django-форме, а если ещё и админку кастомизируешь то и там. Три, пять, десять мест, где разбросана одна и та же бизнес-логика. Знакомо? У меня эта боль копилась годами, пока я не сказал «хватит» и не написал django-nova  фреймворк, который делает Pydantic единственным источником правды для всей экосистемы Django.

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

Читать далее

Новости

Писал мониторинг на Go «за выходные» — застрял на месяцы. Вот на чём

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

В этой статье я расскажу, на какие подводные камни я споткнулся при разработке своего пет‑проекта — мониторинга сайтов на Golang, аналог UptimeRobot.

Начнем издалека... Я хотел разработать пет‑проект, но не банальный todolist, а что‑то свежее, интересное в плане архитектуры и реализации. Шерстя по просторам интернета, я наткнулся на UptimeRobot — сервис для мониторинга сайтов. Азарт и любопытство взяли верх и я начал продумывать, как буду разрабатывать «свой» UptimeRobot. Думал — делов на пару недель от силы. Ведь принцип прост: дергать URL по таймеру и проверять код ответа и всё. Но на практике все оказалось намного сложнее, чем я изначально представлял...

Читать далее

Ребекка Вирфс-Брок, Брайан Уилкерсон «Объектно-ориентированное проектирование: ответственностно-ориентированный подход»

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

В своей программной статье, опубликованной по итогам выступления на OOPSLA '89, Ребекка Вирфс-Брок и Брайан Уилкерсон излагают основы ответственностно-ориентированного подхода. Отталкиваясь от модели клиент/сервер и идеи контракта, авторы показывают, что концентрация на поведении и обязанностях, а не на структуре данных, позволяет максимально раскрыть потенциал инкапсуляции, делая систему более гибкой и устойчивой к изменениям.

Читать далее

Пожарная безопасность столичных объектов: F-metrics делает проекты в nanoCAD

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

Компания F-metrics (Москва) перевела проектирование документации по пожарной безопасности на Платформу nanoCAD, сохранив полную работоспособность и получив конкурентное преимущество за счёт компонента «3D» для визуализации рабочих зон пожарной техники.

Читать далее

Как я прикрутил GigaChat к OpenCode и что из этого понял

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

Мне было интересно проверить GigaChat/GigaCode не в обычном чате, а в нормальной агентной среде разработки. То есть не “ответь на вопрос”, а вот это всё: tools, function calling, streaming, MCP-инструменты, история диалога и работа внутри реального проекта.

Для проверки я подключил GigaChat к OpenCode через TypeScript-плагин. Простой текстовый запрос завёлся быстро, а дальше началось самое интересное: OpenAI-like API оказался похожим на совместимый агентный протокол только снаружи. Внутри пришлось собирать отдельный слой совместимости.

Читать далее

Как команда проектировщиков за 2 месяца освоила nanoCAD BIM без отрыва от производства

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

Рассказ, как команда проектировщиков АО «НПП «ИСТА-СИСТЕМС» за 2 месяца в гибридном формате (видеоуроки в СДО + консультации) освоила nanoCAD BIM ОПС без отрыва от производства, после чего применила знания в крупном проекте.

Читать далее

Renga API: Создание объектов

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

Одна из главных автоматизаций в BIM – создание объектов. Разбираем создание объектов через Renga API шаг за шагом.

Читать далее

Иллюзия легких денег: почему американский API не быстрее активов, торгуемых на Московской бирже

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

Очень часто в статьях рассказывают свои истории успеха или просто хвастаются достижениями, но эта статья про мою неудачу с одной алгоритмической идеей для торговли на Московской бирже. 

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

В качестве поводыря я хотел использовать внешний рынок и API американского поставщика данных для того чтобы получать информацию о:

📍 XAU/USD — Gold Spot / US Dollar
📍 EUR/USD — EUR/USD
📍 BTC/USD — Bitcoin to US Dollar (котировки выбранной поставщиком биржи)

А саму торговлю осуществлять на фьючерсах Мосбиржи:

📍 GDM6 — фьючерсный контракт на золото
📍 GNM6 — фьючерсный контракт на золото (мини)
📍 EDM6 — фьючерсный контракт на курс евро‑доллар США
📍 IBM6 — фьючерсный контракт на акции IBIT iShares Bitcoin Trust ETF
📍 BTM6 — фьючерсный контракт на Индекс МосБиржи Биткоина

Сразу уточню что я не пытался строить высокочастотную торговую систему или конкурировать с маркет‑мейкером. Я частное лицо, НЕ представитель фонда или брокера, а работаю через обычный брокерский API, задержка до меня в город Пермь — несколько секунд (иногда больше).

В моей идее очень сильно интересовала практическая сторона — существует ли на Мосбирже задержка в секунду или больше, которые можно использовать для алгоритмической торговли через инфраструктуру российского брокера?

Синхронизированы ли цены разных площадок?

Пособие по COM в Мастере функций nanoCAD BIM Строительство

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

Знакомим с API для автоматизации в nanoCAD BIM Строительство, фокусируясь на COM-интерфейсе: объясняем, что это такое, какие у него есть объекты, свойства, методы и коллекции, как работать с ними в Мастере функций.

Читать далее

Пять продуктов в одном FastAPI-монолите: HTMX вместо React, грабли Telegram Mini App и биллинг на Stars

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

TL;DR: Привет, Хабр. С 2 по 12 мая я в режиме нон-стоп писал Doday — кросс-платформенный todo: web, Telegram Mini App, чат-бот. Получилось 317 коммитов, ~40 000 строк кода, 633 теста, 38 модулей в app/. Стек — FastAPI + HTMX + Alpine.js + Tailwind, без единой строчки React. Писал в паре с Claude Code, и не скрываю этого — расскажу как именно и какая часть кода реально моя голова, а какая — клавиатура. Грабли, цифры, ссылки внутри.

Читать далее

Как я проектировал очередь задач для работы с AI-агентом

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

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

Читать далее

Пауза, двойственная по природе: контракт хука и протокол воркера

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

Предположим, вы пишете интерпретатор машины Тьюринга, запущенный в Web Worker’е. UI должен показывать трейс — как машина шагает от состояния к состоянию, что пишется на ленту, как двигается каретка. Чтобы пользователь успевал считывать изменения в UI, между итерациями движка нужна короткая задержка — миллисекунды, регулярно, на каждом шаге. Это приостановка движка между итерациями — регулярная и предсказуемая, не «пауза» в смысле UI-кнопки «Пауза» (та останавливает машину до клика «Продолжить»).

Возникает вопрос: где именно в цикле итерации воркеру нужно реализовать приостановку? Кандидатов два, и выбор между ними фиксирует сразу два контракта: хуков движка и протокола между воркером и основным потоком. Выбрать точку — это спроектировать обе стороны сразу; промахнуться — испортить обе. Эта статья — про этот выбор.

Где живёт пауза

Парсинг Telegram: как мы автоматизировали сбор скрытых ID чатов через Telethon и сэкономили 20 часов рутины

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

Как автоматизировать перехват лидов из Telegram, если конкуренты прячут свои чаты и запрещают копирование ссылок? Клиент пришел с задачей: парсить комментарии из 50 крупных каналов в реальном времени. Проблема в том, что для прослушивания нужен ID скрытой группы, который менеджеры вытаскивали руками, тратя на это полдня. В этой статье показываю, как мы обошли визуальные ограничения интерфейса, вытащили нужные ID напрямую через API Telegram и сократили рутину с десятков часов до пары секунд. Внутри — готовый скрипт-сканер на Python.

Читать далее

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

Топ-10 вопросов на собеседовании по FastAPI

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

FastAPI окончательно закрепился в стеке Python-разработчиков, а значит, на собеседованиях вас точно будут гонять по корутинам, Pydantic и Dependency Injection. Я собрал 10 реальных вопросов (включая коварные подвохи от сеньоров!), которые сейчас задают джунам и мидлам. Никакой сухой теории из доков — только практика. Го под кат — проверим, насколько вы готовы к следующему интервью!

Читать далее

AI-метрдотель для ресторанной сети: архитектура, сценарии и интеграции

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

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

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

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

Читать далее

Super Schema Architecture

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

В статье описывается подход к разработке прикладных приложений, основанный на едином максимально подробном формате описания доменных сущностей и контрактов. Приводятся практические примеры использования такого описания. В том числе показано, как декларации могут привнести удобства low-code решений в обычные full-code программы.

Описанный подход работает независимо от используемого на проекте стека технологий и особенно полезен в гетерогенных системах. Поэтому я стараюсь приводить примеры из разных языков программирования и технологий: Java, Python, TypeScript, REST, GraphQL, protobuf.

Читать далее

Ваше сообщение об ошибке читает уставший человек в два часа ночи

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

Два часа ночи, у разработчика горит релиз, он подключает ваш API — и получает в ответ голое «invalid_request». Что не так, почему, что делать — ни слова. Сорок минут гаданий и злое письмо в поддержку.

Разбираем, как сделать опыт разработчика (DX) человеческим: как переписать ошибки по стандарту RFC 9457, но для живого человека; почему время до первого успешного вызова — главная метрика онбординга; и отчего предсказуемый, «скучный» API — это комплимент. С готовым шаблоном, который можно прикрутить к себе сегодня.

Читать далее

FASA: архитектура ПО без слоёв и адаптеров. Спецификация

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

Большинство современных архитектурных подходов учат нас строить всё больше слоёв абстракции: контроллеры, сервисы, репозитории, адаптеры, транспортеры… Но что, если сложность системы растёт не из-за предметной области, а из-за самой архитектуры?

В этой статье я представляю FASA (Flat Adaptive Software ARchitecture) — спецификацию, которая предлагает радикально простой ответ: всего три сущности, строгие правила зависимостей и никаких промежуточных слоёв.

Вы узнаете, почему «плоский» граф компонентов может быть устойчивее многослойной архитектуры, как версионировать интерфейсы без боли, используя правило двойной поддержки (N-1) и где проходит граница между семантикой приложения и инфраструктурой — и почему это важно.

Спецификация языково-независима: примеры приведены для разных контекстов (Rust, сетевые протоколы, IPC), но правила применимы в любом стеке.

Читать

IT-ретейнер для ресторанной сети: как за 7 месяцев запустить 6 цифровых продуктов

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

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

За 7 месяцев работы были запущены 6 продуктов:

Читать далее

APItizer — конструктор REST API-контрактов

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

Добрый день, уважаемые читатели Хабра.

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

Если вам интересно сразу посмотреть на продукт, добро пожаловать в APItizer (прямая ссылка, вдруг домен не работает).

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