Обновить
35.3

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

О создании API

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

PowerShell и LiveJournal (ЖЖ): три способа аутентификации

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

Я изучаю сетевое взаимодействие по протоколу HTTP(S). Мне было интересно попробовать связаться с «Живым Журналом» (он же «LiveJournal» или «ЖЖ») из программы-оболочки «PowerShell» и получить от этого веб-сервиса какие-нибудь данные.

В статье описаны подходы к началу работы с ЖЖ из программы через веб. Даны ссылки на документацию. Детально, с практическими примерами на языке PowerShell, описано три способа аутентификации при вызове удалённых процедур (функций) программы-сервера «Живого Журнала»: «clear», «challenge-response» и способ с помощью «cookie». В последнем случае описано, как открыть сессию, работать в ней, а затем завершить ее.

Читать далее

Гайд по эвент-сорсингу

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

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

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

Читать

Как Homebrew раздаёт 52 миллиона пакетов в месяц?

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

Пакетный менеджер Homebrew раздаёт 52 миллиона пакетов в месяц. Чтобы это делать, он использует хранилища контейнеров, отлично подходящие для этой задачи. Как это работает?

Читать далее

Шаблон backend сервера на Golang — часть 3 (Docker, Docker Compose, Kubernetes (kustomize)

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

Шаблон backend сервера на Golang — часть 3 (Docker, Docker Compose, Kubernetes (kustomize)


Схема развертывания в Kubernetes


Первая часть шаблона посвящена HTTP серверу.


Вторая часть шаблона посвящена прототипированию REST API.


Третья часть посвящена развертыванию шаблона в Docker, Docker Compose, Kubernetes (kustomize).


Четвертая часть будет посвящена развертыванию в Kubernetes с Helm chart и настройке Horizontal Autoscaler.


Пятая часть посвящена оптимизации Worker pool и особенностям его работы в составе микросервиса, развернутого в Kubernetes.


Для корректного развертывания в Kubernetes, в шаблон пришлось внести изменения:


  • способа конфигурирования — YAML, ENV, Kustomize
  • подхода к логированию — переход на zap
  • способа развертывания схемы БД — переход на liquibase
  • добавление метрик prometheus

Ссылка на новый репозиторий.


Шаблон goapp в репозитории полностью готов к развертыванию в Docker, Docker Compose, Kubernetes (kustomize), Kubernetes (helm).


Настоящая статья не содержит детального описание используемых технологий


Содержание


  1. Изменение подхода к конфигурированию
  2. Добавление метрик prometheus
  3. Изменение подхода к логированию
  4. Развертывание схемы БД
  5. Сборка Docker image
  6. Сборка Docker-Compose
  7. Схема развертывания в Kubernetes
  8. Подготовка YAML для Kubernetes
  9. Kustomization YAML для Kubernetes
  10. Тестирование Kubernetes с kustomize
Читать дальше →

Взаимодействие с MinIO по относительному пути. Получится или нет?

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

В интернете много информации о том, как развернуть MinIO на хосте по порту, но практически нет о том, что делать, если порт наружу открывать не хочется, а файлы загрузить надо? Потратив пару дней на разбирательство, получился вполне "рабочий велосипед". Я решил воспользоваться Законом Каннингема и разместить своё решение. Надеюсь, оно не ложное. ?

Поехали

Парсинг ответов на BLE-команды на языке Swift на примере GoPro

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

Привет, Хабр! Меня зовут Полина, работаю в Doubletapp iOS‑разработчиком и сегодня хочу рассказать о нашем опыте работы с API GoPro, а конкретно с парсингом ответов на команды BLE, которые описаны в этом API.

Содержание:

Принцип работы с BLE-устройствами
Сервисы и характеристики BLE-устройств
Процесс отправки команд и получения ответов через BLE
Простые ответы
Комплексные ответы
Формирование пакетов
Парсинг комплексных ответов
Общий алгоритм работы с BLE-ответом 

Читать далее

Service Mesh на стероидах, часть 2: Zero Deployment Downtime в корпоративных приложениях

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

Если вам доводилось быть в славном городе Мадриде, что на Испанщине, наверняка в галерее Прада вы видели картину Босха «Сад земных наслаждений», которая демонстрирует типичный рабочий день системного архитектора. Но на самом деле на первый день после продакшена больше похоже...

Читать далее

Выпускайте Кракена: опыт использования KrakenD

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

Привет, Хабр! Меня зовут Владимир Калугин, я руковожу бэкенд-разработкой в МТС Travel. Сегодня расскажу про KrakenD, готовое решение, которое мы используем для реализации API-шлюза, важной штуки для продуктов с микросервисной архитектурой. Уверен, наш опыт может пригодиться разработчикам из других сервисов.

Читать далее

Low-code MVP для получения плана застройки участка по кадастровому номеру на базе Notion, Airtable и Telegram

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

Суть задачи: по кадастровому номеру участка необходимо получить несколько вариантов проектов застройки участка в формате .DWG (Autocad) со всеми расчетными показателями застройки.

Low-code подход реализуется через использование Airtable в качестве базы данных и системы управления очередями заданий. Frontend реализуется на базе публичной страницы в Notion и чат-бота Telegram.

Читать далее

5 неочевидных возможностей FastAPI: упрощаем работу с бэкендом на Python

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

Почти все, с чем мы сталкиваемся в интернете, имеет отношение к API, а точнее к версиям этого программного интерфейса, использующим для работы HTTP-запросы. Когда мы хотим узнать прогноз погоды, интерфейс браузера или мобильного приложения вызывает API Яндекс.Погоды или API Gismeteo. Когда прокладываем кратчайший маршрут из одного места в другое, Яндекс.Карты вызывают соответствующее API.

Пользовательские API-интерфейсы могут быть реализованы на Python с использованием нескольких фреймворков. В этой статье остановимся на особенностях работы с одним из самых популярных вариантов — платформой FastAPI, библиотеки которой активно используют такие технологические гиганты, как Microsoft, Netflix, Uber. Речь пойдет о некоторых расширенных функциях FastAPI, которые могут использовать в своих проектах те разработчики, у кого уже есть базовые знания о фреймворке.

Читать далее

Пять примечательных функций Postman, которые мы используем в тестировании банковских систем

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

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

В этом посте я пробегусь по пяти функциям и приемам для Postman, которые мы используем для тестирования систем, связанных с банковскими операциями в сегменте C2B – теми самыми, которые весь мир ежедневно проводит через всевозможные кассовые аппараты, банкоматы, терминалы и QR-коды.

Читать далее

Книга «Непрерывное развитие API. Правильные решения в изменчивом технологическом ландшафте, 2-е изд.»

Время на прочтение15 мин
Охват и читатели4.8K
image Привет, Хаброжители!

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

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

Работа с микросервисами через API-gateway

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

Однажды один тимлид поставил передо мной задачу реализовать механизм взаимодействия пользователя через веб-интерфейс с микросервисами через единую точку входа с использованием FastAPI и RabbitMQ. Спешу поделиться с тобой, мой читатель, тем, что у меня получилось.

Читать

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

Организация автоматического запуска автотестов с использованием Downstream pipelines в GitLab CI

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

Привет, Хабр! Меня зовут Андрей, я SDET-разработчик SimbirSoft. В практике CI/CD один из общепринятых стандартов — настройка автоматического запуска автотестов при деплое сервиса на стенды. То есть при запуске сборки мы сразу видим, как пройдут смоук-автотесты, и на основе отчета решаем, передавать сборку дальше QA-команде или дорабатывать. А скорость исправления ошибок критично важна для бизнеса.

Мы разберем автоматический запуск автотестов с использованием Downstream pipelines в GitLab CI на примере проекта с несколькими микросервисами.

Читать далее

Что выбрать для очередного API: HTTP или gRPC

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


Команда VK Cloud перевела статью с подробным техническим сравнением двух типов API: HTTP и gRPC. Автор рассказывает о своем опыте работы и описывает нюансы, преимущества и недостатки каждой технологии.
Читать дальше →

Kodi перестал обновлять информацию о фильмах, потому что TMDB заблокировал доступ пользователям из России

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

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

The Movie Database (TMDB) - это популярная редактируемая пользователями база данных фильмов и сериалов, которая содержит описания большинства фильмов и обложки на русском языке.

При помощи своего парсера Kodi может идентифицировать фильм по названию файла, а затем скачать описание, обложку, актёров и многое другое с TMDB.

Блокировка доступа пользователям из России к TMDB произошла примерно в апреле 2022 года, но я разбираюсь с этим сейчас, потому что актуальным для меня стало только теперь, а конкретного решения проблемы коди не скачивает обложки, не работает скрепер я не нашёл.

Kodi c The Movie Database (TMDB) без VPN

Масштабирование NodeJS приложений, теория и практика

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

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

Читать далее

Подключаем SignalR к Unity

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

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

Читать далее

Зачем нужен эмулятор retrowin32

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

Самый популярный вопрос о моём эмуляторе Windows retrowin32 (после «Зачем вообще это нужно?») — это вопрос о том, как он работает. Сегодня ответ кажется мне очевидным, но прежде чем я разобрался, он представлял для меня огромную загадку. Поэтому я постараюсь объяснить так, чтобы вам тоже стало понятно.
Читать дальше →

Нельзя просто так взять и написать полезный iOS фреймворк… Или можно?

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

Нельзя просто так взять и написать полезный iOS фреймворк... Или все-таки можно?

Привет, Хабровчане!

Меня зовут Дмитрий Новиков, я – разработчик департамента разработки корпоративных решений в IBS. Мы в компании занимаемся разработкой мобильных приложений на заказ и хотим рассказать, как мы пришли к идее создания собственного iOS фреймворка для решения ряда полезных в мобильной разработке задач, а также что у нас в итоге из этого получилось.

Интересно? Читайте статью под катом!

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