Обновить
45.32

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

О создании API

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

Книга завершена [SDK & UI-библиотеки] Вычисляемые свойства. Заключение

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

Это главы 47-48 раздела «SDK и UI-библиотеки» моей книги «API». На этом второе издание книги завершено, все шесть разделов готовы. Если эта работа была для вас полезна, пожалуйста, оцените книгу на GitHub, Amazon или GoodReads. English version on Substack.

Вернёмся к одной из проблем, описанных в главе «Проблемы встраивания UI-компонентов»: наличие множественных линий наследования усложняет кастомизация компонентов, поскольку подразумевает, что они могут наследовать важные свойства по любой из вертикалей.

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

Читать далее

Автоматизация тестирования голосового чат-бота в Google DialogFlow на Python

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

Ещё на этапе собеседования в текущую команду передо мной поставили вопрос:

Применима ли автоматизация тестирования при проверке функционала чат‑ботов?

Я ответил "Да по-любому", и пошел изучать вопрос.

Читать далее

[SDK и UI-библиотеки] Разделяемые ресурсы и асинхронные блокировки

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

Это глава 46 раздела «SDK и UI-библиотеки» моей книги «API». Второе издание книги будет содержать три новых раздела: «Паттерны API», «HTTP API и REST», «SDK и UI‑библиотеки». Если эта работа была для вас полезна, пожалуйста, оцените книгу на GitHub, Amazon или GoodReads. English version on Substack.

Другой важный паттерн, который мы должны рассмотреть — это доступ к общим ресурсам. Предположим, что в нашем учебном приложении открытие экрана предложения стало требовать выполнения дополнительного запроса к серверу и, таким образом, стало асинхронным. Модифицируем код OfferPanelComponent:

Читать далее

Подружим Sentry и Mattermost быстро и просто через адаптер

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

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

Вот 4 простеньких шага для решения этой проблемы...

Читать далее

Добавляем номер в чёрный список с помощью API

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

Привет, Хабр! Меня зовут Анастасия Иванова, я технический писатель МТС Exolve. В этой статье я расскажу, как можно реализовать автоматическое добавление номеров в чёрный список после нескольких входящих звонков в веб-приложении на NodeJS.

Читать далее

Расширенная настройка бэкэнд-проекта Python ( пример FastAPI )

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

? Привет! Возможно, вы что-то знаете о Python, если вы здесь. Особенно о веб-фреймворках Python. Например, есть одна вещь, которая меня очень раздражает при использовании Django: наложение слоя структуры проекта.

Вы можете спросить, почему это проблема, верно? Потому что вы просто следуете официальной документации, а затем у вас просто есть код, который понимает каждый, кто читает эту документацию.

Но как только вы начнете писать «лучшие» приложения, вы освоите другие шаблоны проектирования мирового класса, такие как DDD и его многоуровневая архитектура, и через некоторое время вы еще больше усложните свою систему с помощью CQRS. Лично мне стало труднее поддерживать базу кода, следуя всем этим принципам, когда фреймворк является ЦЕНТРАЛЬНОЙ частью всего приложения. Из него даже выйти невозможно, если через какое-то время решишь сменить фреймворк…

✅В этой статье я постараюсь поднять вопрос, а затем решить его.

? Отказ от ответственности: давайте ограничим проект серверного API интернет-рынком.

Читать далее

Почему мой любимый API — это файл zip на сайте Европейского центрального банка

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

Когда был максимальный курс доллара к евро?

Вот небольшая программа, вычисляющая это:

curl -s https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.zip \ | gunzip \ | sqlite3 -csv ':memory:' '.import /dev/stdin stdin' \ "select Date from stdin order by USD asc limit 1;"

Результат: 2000-10-26. (Можете попробовать запустить её самостоятельно.)

Читать далее

Ожидания в вакансии QA Engineer: Знакомство с JSON, REST и Типами запросов

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

Одним из таких ключевых ожиданий со стороны работодателей является знание JSON, REST и типов запросов HTTP. В этой статье мы рассмотрим, почему это важно и какие преимущества это приносит как для специалистов, так и для компаний.

Читать далее

[SDK и UI-библиотеки] Backend-Driven UI

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

Это глава 46 раздела «SDK и UI-библиотеки» моей книги «API». Второе издание книги будет содержать три новых раздела: «Паттерны API», «HTTP API и REST», «SDK и UI‑библиотеки». Если эта работа была для вас полезна, пожалуйста, оцените книгу на GitHub, Amazon или GoodReads. English version on Substack.

В предыдущей главе мы обсудили, каким образом можно упростить разработку сложных компонентов с использованием паттерна «модель». Другой способ обойти сложность «переброса мостов» между несколькими предметными областями, которые нам приходится сводить в рамках одного UI-компонента — это убрать одну из них. Как правило, речь идёт о бизнес-логике: мы можем разработать компоненты полностью абстрактными, и скрыть все трансляции UI-событий в полезные действия вне контроля разработчика.

В такой парадигме код поиска предложений выглядел бы так:

Читать далее

Использование kafka-rest для построения интеграционных API

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

Есть простая, можно сказать, типовая – задача, передать данные из системы «А» в систему «Б». А – классическая legacy-трехзвенка из 00х с IIS-MSSQL, «Б» - новая-нулевая-микросервисная с внутренней шиной на apache kafka и собственным ETL на Apache NiFi, развернута в k8s. Направление передачи – из «А» в «Б», по расписанию , в общем ничего сложного – «Работенка на 5 минут»: идем в NiFi делаем QueryDatabaseTable->PublishKafkaRecord и продолжаем спать – но тут начинаются «Нюансы»(ТМ) в виде ИБ, которая говорит, что прямая интеграция корпоративных систем – харам, архитектуры которой (дикие люди!) не нравится хождение в чужую БД (Подержи моё пиво! Я сто раз так делал!) и прочих скучных регламентов, требующих «наличия аутентификации», «направления установления соединения совпадающего с направлением передачи» и тому подобных глупостей.

И вот тут на сцену выходит корпоративная интеграционная шина – (low|no)-code решение, которое умеет в расписания, подключение к ИС по различным протоколам (в том числе и *dbc), передачу данных с помощью REST\SOAP, аутентификацию, обработку ошибок, алертинг и кучу других вещей. Оооок, шина по расписанию будет ходить в БэДэ (Или не БэДэ – там уже видно будет), забирать данные и передавать… А куда, собственно, передавать?

Первый вариант – «в kafka’у!» хорош примерно всем – кроме реализации. Собственно, бинарный протокол kafka’и шина не умеет, ИБ не умеет в инспекцию этого самого протокола, ingress-nginx контроллер не умеет (Нормально – не умеет, ssl-passthrough в данном случае не очень-то «нормально») в публикацию kafka’и, а согласовывать с ИБ публикацию брокеров через LB – удачи, пацаны. Плюс нормальная аутентификация\авторизация на kafka’е – тот еще геморрой между нами говоря. Отметаем.

Читать далее

«Oh no! code» или как создать голосового помощника без единой строчки кода с помощью VoiceBox

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

В последнее время на меня практически из каждого утюга льется реклама различных курсов по no-code разработке, в которой радостно рассказывают, что программировать скоро сможет каждый и это светлое будущее человечества. Но так получилось, что я хоть и не разработчик, но свой путь к азам программирования начал с учебника по Turbo Pascal 7. Поэтому на no-code я смотрю с некоторым подозрением. 

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

Читать далее

7 аргументов почему UUID лучше, чем автоинкрементные идентификаторы

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

В мире баз данных идентификаторы имеют решающее значение для уникальной идентификации записей. Традиционно многие разработчики предпочитали автоматически увеличивающиеся целочисленные идентификаторы. Однако есть еще один вариант, который набирает популярность: универсально уникальные идентификаторы (UUID). В этой статье мы рассмотрим, почему UUID часто являются лучшим выбором по сравнению с автоматически увеличивающимися идентификаторами.

Читать далее

Как банки становятся IT-компаниями с финансовыми сервисами: путь от SOAP к REST

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

Всем привет! Я Сергей Паршиков. С 2004 года работаю с digital-сервисами. Начинал с собственной дизайн-студии, был Product Owner в Яндексе и Mail (теперь VK), создавал B2B-экосистему Сбера: от ID и API до запуска и монетизации околобанковских сервисов. Сейчас развиваю digital-каналы (web, mobile, API) для юридических лиц в Альфе. Увлекаюсь Web3 инфраструктурой, которая крайне привлекает меня технологичностью, динамикой и сохраняющимся духом digital-пиратства. 

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

Читать далее

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

[SDK и UI-библиотеки] MV*-фреймворки

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

Это глава 44 раздела «SDK и UI-библиотеки» моей книги «API». Второе издание книги будет содержать три новых раздела: «Паттерны API», «HTTP API и REST», «SDK и UI‑библиотеки». Если эта работа была для вас полезна, пожалуйста, оцените книгу на GitHub, Amazon или GoodReads. English version on Substack.

Очевидным способом сделать менее сложными многослойные схемы, подобные описанным в предыдущей главе, является ограничение возможных путей взаимодействия между компонентами. Как мы описывали в главе «Слабая связность», мы могли бы упростить код, если бы разрешили нижележащим субкомпонентам напрямую вызывать методы вышестоящих сущностей. Например, так:

Читать далее

Взаимодействие с MOEX ISS через Python

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

В этой статье я хочу дать поверхностное представление о том, как работает взаимодействие с MOEX ISS на Python requests. Да, сегодня уже существуют готовые решения для работы с MOEX, например aiomoex. Но как по мне, лучше всегда сначала что‑то захардкодить и понять, как это работает под капотом. Если вы только знакомитесь с MOEX ISS или начинаете заниматься анализом временных рядов, думаю, вам эта статья будет полезна. Если же вы более продвинутый специалист, то вряд ли найдете здесь что‑то новое.

Читать далее

Инструменты создания API клиента для .NET

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

При начале разработки нового проекта у моей команды всегда появлялся вопрос, какую библиотеку выбрать для межсервисного взаимодействия? А какую использовать для походов в сторонние сервисы? В этой статье я постарался вкратце осветить различные обёртки над HttpClient.

Читать далее

Как отправлять пользовательский интерфейс по API

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

Есть приём, позволяющий совершенно по-новому представить работу с пользовательскими интерфейсами (UI). Можно передавать UI на клиент через различные API – так получаются серверно-управляемые пользовательские интерфейсы. Такой метод позволяет выйти на новый уровень гибкости и динамичности, трансформирует традиционные парадигмы разработки UI.

Серверно-управляемые UI существуют совсем не только в теории. Их внедряют некоторые крупнейшие игроки технологической индустрии. В качестве примеров можно привести Lyft и Airbnb. Они активно используют серверно-управляемые UI, чтобы выдавать миллионам пользователей во всём мире динамический контент и быстро предоставлять обновления.

Но что же собой представляют серверно-управляемые UI? Как они работают и почему приобретают такую важность в современной разработке на JavaScript? В данном посте мы постараемся ответить на эти вопросы и углублённо рассмотреть серверно-управляемые UI, их достоинства, а также как можно реализовать такой интерфейс в вашем собственном проекте.
Читать дальше →

[SDK и UI-библиотеки] Декомпозиция UI-компонентов

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

Это глава 44 раздела «SDK и UI-библиотеки» моей книги «API». Второе издание книги будет содержать три новых раздела: «Паттерны API», «HTTP API и REST», «SDK и UI‑библиотеки». Если эта работа была для вас полезна, пожалуйста, оцените книгу на GitHub, Amazon или GoodReads. English version on Substack.

Перейдём к более предметному разговору и попробуем объяснить, почему требование возможности замены одной из подсистем компонента приводит к кратному усложнению интерфейсов. Продолжим рассматривать пример компонента SearchBox из предыдущей главы. Напомним, что мы выделили следующие факторы, осложняющие проектирование API визуальных компонентов:

Читать далее

Полное руководство по использованию FVM (Flutter Version Management) – жонглируйте версиями Flutter sdk в своих проектах

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

В жизни разработчика рано или поздно наступает момент, когда проектов становится так много, что одной единственной (обычно это stable) версией flutter sdk уже не обойтись. В данной статье мы рассмотрим консольный инструмент fvm для управления версиями flutter sdk, ВСЕ имеющиеся в нём команды и пройдём путь от установки до использования в проекте.

В качестве бонусных аспектов я также уделил время на изучение Sidekick (графическая оболочка для fvm) и на разбор имеющихся аналогов (Puro – сильно уверен, что вы не слышали о таком инструменте).

Прошу к изучению ?

fvm use stable

Нагрузочное тестирование API без использования UI

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

Нагрузочное тестирование API без использования UI

В этой статье поговорим о Нагрузочном тестировании при помощи JMeter-Java-Dsl и реализуем наш первый нагрузочный тест для API с генерацией динамических значений.

Читать далее

Вклад авторов