Обновить
128K+

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

О создании API

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

ID, token, UUID и slug: в чём разница и почему их нельзя мешать

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

В каждом бэкенде рано или поздно рядом появляются id, UUID, slug, token и request_id. Все они выглядят как строки, но отвечают за разные вещи.

Когда это забывают, UUID становится защитой, slug — вечной айдишкой, а token — просто ещё одним идентификатором.

Читать далее

Плохое ТЗ — это не вина одного человека. Это результат работы команды

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

Все любят истории о сильных личностях. Про Туполева, Королёва, Стива Джобса, Сергея Брина, Марка Цукерберга. Про Нила Армстронга, который сделал «один маленький шаг для человека — и гигантский скачок для человечества». Про Юрия Гагарина, который первым полетел в космос.

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

Читать далее

Семь стрел, 429 деревьев: семилетняя ошибка именования, всплывшая за чисткой Mermaid-визуализации

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

Заходят как-то две машины Тьюринга в одну диаграмму… а у них имена одинаковые.

Я говорю «машины», а на деле — два разных экземпляра State @turing-machine-js/machine, сконструированные по-разному, с разным поведением во время исполнения, и со строго одинаковым state.name. Это происходило в библиотеке, которую я разрабатываю в качестве хобби с 2019 года, и я этого не замечал семь лет.

Обнаружил случайно, начиная с задачи на чистку Mermaid-визуализации. Закончил — кардинальной переделкой того, как композиция состояний отражается в имени. И узнал, что за этой переделкой прячется число C_7 = 429.

Читать далее

Как мы собрали LLM-шлюз для России: готовый LiteLLM на data-plane, свой биллинг на Go и n8n

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

Год назад доступ к зарубежным LLM из России превратился в квест. OpenAI и Anthropic не принимают российские карты и блокируют запросы по гео. Обходные пути — VPN, иностранная карта, прокладка через знакомых за рубежом — годятся для пет-проекта, но не для продакшена, где нужен стабильный аккаунт, предсказуемый счёт и возможность объяснить бухгалтерии, за что платим.

Мы сделали apiglue — шлюз, который закрывает эту боль: один OpenAI-совместимый endpoint, за которым прячутся десятки провайдеров, оплата рублёвой картой и баланс в рублях. А заодно — управляемый хостинг n8n, чтобы не только дёргать модели через API, но и собирать на них автоматизации без своего сервера.

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

Читать далее

OpenAPI без #[OA\...]: как я сделал генератор документации для Symfony

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

В прошлой статье я уже рассказывал, как однажды устроился на работу и получил пачку «интересных» задач: вручную синхронизировать OpenAPI, оформленный в комментариях к коду, с самим кодом в десятке сервисов.

Тогда это звучало как начало анекдота, но мне было не до смеха.

С тех пор я сменил работу. И, как будто вселенная решила проверить моё чувство юмора, я снова вижу API, где контракт живёт рядом с кодом в ручных #[OA\...] атрибутах.

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

Читать далее

REST и RESTful API для QA Engineer

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

Практически каждый современный веб-сервис, мобильное приложение или микросервис использует API для обмена данными между компонентами системы. В большинстве случаев речь идет именно о REST API.

Читать далее

Немного магии: как устроен API фикстур в Playwright

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

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

Читать далее

Интероперабельность медданных: почему один биомаркер — это не один код

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

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

Почему «синонимы → код» — ловушка, зачем нужны и LOINC, и UCUM, как это ложится в OMOP для RWE и почему финальный код нельзя доверить языковой модели. Референсная архитектура на бумаге — и честно про путь.

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели9.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.5K

Знакомим с 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.3K

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

Читать далее

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

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

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

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

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

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

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

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

Читать далее