Обновить
45.22

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

О создании API

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

Исследуя мир изображений: PicTrace и искусственный интеллект в действии

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

.В современном мире, где количество визуальной информации растет с каждым днем, умение быстро и точно находить аналогичные изображения становится все более важным. Представьте, что вы можете загрузить изображение, и в считанные секунды получить список самых похожих на него картинок из большой базы данных. Звучит интересно? Именно этого я добиваюсь достичь в своём веб‑приложение — PicTrace.

Что же такое PicTrace и как эта платформа помогает решать такие задачи? Каким образом она использует мощь OpenCV и TensorFlow для обработки изображений? Почему сочетание структурного сравнения и ключевых точек делает мой подход интересным?

Читать далее

Памятка по работе с JSON в консоли Linux на примере api

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

Язык разметки JSON используется в огромном количестве приложений и систем благодаря своей простоте, а также является стандартным форматом обмена данными между клиентом и сервером в RESTful API. Многие приложения и системы предоставляют интерфейс удаленного управления, который может использоваться как для получения информации (например, для передачи данных в систему мониторинга), так и для управления этой системой через другое приложение или скрипты. В данной статье на примере работы с одним сервисом через API разберемся, как обрабатывать данными в формате JSON через утилиту jq, а также расскажу про другие инструменты.

Читать далее

API в ОК: анализ покрытия и автотесты

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

Написание автотестов — одна из наиболее эффективных практик, которая позволяет проверять работоспособность всех компонентов сервиса и своевременно обнаруживать любые сбои. Но писать много автотестов — не всегда верный подход: тестов должно быть не много, а достаточно. Иначе время и силы инженеров по тестированию и автоматизации будут тратиться напрасно. Но как понять, что автотестов достаточно, и, главное, быть уверенным, что обновление или добавление новых методов внутри проекта не создаст «неотслеживаемые бреши»? Очевидно, что для этого нужна система анализа покрытия автотестами.

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

Читать далее

Создание собственного API на Python (FastAPI): Router и асинхронные запросы в PostgreSQL (SQLAlchemy)

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

Друзья, приветствую! Если вы читали мои прошлые статьи из серии «Создание собственного API на Python (FastAPI) и повторяли за мной, то сейчас вы готовы к полноценной интеграции PostgreSQL в ваше API.

Сегодня мы научимся ещё более качественно структурировать своим проекты, разберемся что такое Router и внедрим в свой код все базовые методы по асинхронной работе с базой данных PostgreSQL через FastApi.

Читать далее

Разработчикам, аналитикам и архитекторам: рецензия на книгу «Проектирование архитектуры API»

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

Сегодня представляем на Хабре очень интересную книгу — переводное издание «Проектирование архитектуры API» («Mastering API Architecture») издательства O'REILLY. Это руководство по разработке и реализации API (программных интерфейсов приложений). Разобраны базовые вопросы обмена информацией в микросервисной архитектуре, обработка запросов на сайтах и в веб‑приложениях (парадигма REST). Бонусами к статье — промокод «SSPSOFT» на русское издание и ссылка на оригинальный текст книги (бесплатная копия книги в PDF).

Читать далее

Как мы OpenAPI в приложениях используем (Spring Boot, Typescript)

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

Хочу рассказать, как мы реализуем на практике контакты по спецификации OpenAPI, стараемся следовать подходу Contract First и в целом разрабатывать так, чтобы удобно было как разработчикам в команде, так и всем, кто использует наши сервисы. В статье описана генерация Java и typescript, а так же конфигурации maven.

Контракты OpenAPI — спецификация, которая позволяет описывать интерфейс взаимодействия с сервисом в виде REST. Или не REST, тут зависит от задачи и ее реализации.

Вдаваться в историю появления спецификации и ее развития не буду. Если кратко — эта спецификация позволяет описывать контракт взаимодействия с сервисом с помощью yaml‑синтаксиса. А с помощью OpenAPI generators можно генерировать из такого описания клиент‑серверные интерфейсы на различных языках. На данный момент последняя версия OpenAPI — 3.1.0 — является наиболее удобной и структурированной, позволяет описывать контракт с помощью JSON. Мы осознанно используем версию 3.0.3. Почему? Расскажу далее.

Читать далее

Не тереби мое API или API-First Security Strategy

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

В современной цифровой экосистеме API (интерфейсы программирования приложений) играют ключевую роль, обеспечивая связь и взаимодействие между различными компонентами программного обеспечения. Защита API стала приоритетной задачей разработчиков и инженеров, поскольку уязвимости в этих интерфейсах могут привести к серьезным нарушениям безопасности и утечке данных. Методы защиты API включают в себя широкий спектр практик, начиная от использования аутентификации и авторизации до применения шифрования данных и мониторинга трафика. Грамотно построенная система защиты API является неотъемлемой частью современной инфраструктуры, обеспечивая надежность, конфиденциальность и целостность информационных потоков.

Читать далее

Как создать расширение OpenCart для отправки SMS

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

Представим ситуацию. Где-то на просторах нашей страны есть благородный негоциант XXI века. У него много светлых идей, но мало золотых дублонов в электронном кошельке. Наш предприниматель выбрал для себя один из самых популярных бесплатных движков интернет-магазина в России OpenCart. 

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

Наш герой начинает искать информацию о том, как доработать свой интернет-магазин. Мы с вами не можем оставить человека в беде. Поэтому я написал туториал, как создать собственное расширение для OpenCart 4 и реализовать в нём вызов стороннего API. 

Разберу пример отправки SMS через API МТС Exolve, но в принципе материалы статьи с небольшими доработками подойдут для вызова любого другого REST API.

Читать далее

Как GitHub-copilot плагин использует VSCode Proposed API

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

VSCode создавался с прицелом на возможность расширения функционала с помощью плагинов. От UI интерфейса до своих AI агентов — почти каждую часть VS Code можно настроить и улучшить с помощью VSCode API. Многие части самого VSCode фактически являются плагинами.

Есть подробная документация по созданию своего плагина, а большое количество "мини-плагинов" с демонстрацией возможностей можно найти в репозитории vscode-extension-samples. Сама dts-ка с описанием API есть в основной репе microsoft/vscode вот тут. Кроме src/vscode-dts/vscode.d.ts в директории еще много других файлов в формате vscode.proposed.*.d.ts. Это экспериментальное API. О нем и пойдет речь в данной статье.

Читать далее

Создание собственного API на Python (FastAPI): Гайд по POST, PUT, DELETE запросам и моделям Pydantic

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

Друзья, приветствую вас в очередной статье, посвященной разработке API с использованием фреймворка FastAPI. В прошлой публикации мы познакомились с основами FastAPI и написали первые функции, освоив GET-запросы. Однако возможности HTTP общения клиента и сервера этим не ограничиваются. Сегодня мы изучим POST, PUT и DELETE запросы.

В прошлой статье мы рассмотрели GET запросы и научились писать свои первые функции. Сегодня же мы рассмотрим методы, позволяющие отправлять данные (POST), обновлять (PUT) и удалять данные (DELETE).

Читать далее

Интеграция с маркетплейсами на примере Ozon и Wildberries. Как мы это сделали

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

Всем привет. Меня зовут Татьяна Цикунова, я работаю системным аналитиком в компании МойСклад, в команде eCommerce. Моя команда специализируется на разработке интеграций сайтов с сервисом МойСклад. Мы помогаем бизнесу автоматизировать процессы: учета, продаж, коммуникаций с клиентами, выход на новые торговые площадки. Также мы разрабатываем интеграции с самыми популярными маркетплейсами на рынке России и зарубежных стран У МоегоСклада уже есть решения для селлеров на Ozon, Wildberries, Яндекс Маркете и Мегамаркете, а также для зарубежных маркетплейсов.

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

Сначала приведу немного статистики от Data Insight. Чтобы понимать, насколько сейчас популярна торговля на маркетплейсах, достаточно взглянуть на слайды ниже. 

Читать далее

Telegram бот для управления торрент клиентом и интеграция с трекером

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

Всем привет! Это вторая статья про мой небольшой проект Kinozal-Bot. Прошло полгода с момента первой публикации, с тех пор я забрасывал проект и возвращался к нему, добавляя новый функционал и исключая другой, ввиду ограничений Telegram для его реализации. В этой статье хочу рассказать про нововведения, а также кому вообще такое решение может быть полезно и какие задачи оно решает.

Читать далее

Расширенные возможности SOAP и когда он нужен?

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

SOAP (Simple Object Access Protocol) — это протокол обмена сообщениями, который используется для обмена структурированными данными в распределенных вычислительных средах. Хотя SOAP часто рассматривается как более сложная и тяжеловесная альтернатива REST, у него есть ряд расширенных возможностей, которые делают его подходящим выбором для определенных корпоративных приложений. Давайте подробно рассмотрим эти возможности, включая WS-Security, а также разберемся, как WS-Security обеспечивает безопасность SOAP-сообщений.

WS-спецификации играют важную роль в расширении функциональности и безопасности SOAP и других веб-сервисов."WS" в контексте WS-Security и других подобных спецификаций расшифровывается как "Web Services".

Читать далее

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

Немного кода и вы опционный трейдер: API Опционного Калькулятора

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

Всем привет! На связи Срочный рынок Московской биржи. Будем вместе исследовать увлекательный мир на стыке финансов и технологий. Независимо от того, являетесь ли вы профессионалом в области финансов, энтузиастом технологий или хотите быть в "модной" теме инвестиций, знакомство с новым сервисом Московской биржи будет полезно.

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

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

Что умеет калькулятор?

Читать далее

Создание собственного API на Python (FastAPI): Знакомство и первые функции

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

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

Читать далее

И снова клон десктопного клиента Telegram

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

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

Читать далее

Автотесты на Postman в связке с Newman, Gitlab CI и AllureTestops: как организовать тестирование бэка на проекте

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

Всем привет!

Меня зовут Гребенюк Гузель, я QA-руководитель группы тестирования в АЭРО. Мы занимаемся разработкой eCommerce- и data-решений для крупного бизнеса.

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

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

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

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

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

Читать далее

Разработка простого приложения для заметок на HappyX

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

Как создать веб-приложение, если вы пишите на Nim? Что такое HappyX и как можно создать на нем приложение для заметок? Обо всем этом вы узнаете в полной статье.

Читать далее

Жизнь – боль: как одновременно поддерживать в Rust синхронный и асинхронный код

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

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

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

Вы решаете реализовать библиотеку с применением async. Работа, которая будет выполняться с помощью вашей библиотеки, заключается в основном в выполнении HTTP-запросов, обслуживающих ввод/вывод, поэтому применять здесь async действительно целесообразно (кстати, это одна из тех фишек, благодаря которым сегодня так востребован Rust). Вы садитесь писать код — и вот, через несколько дней у вас готова версия v0.1.0. «Приятно», — думаете вы, как только cargo publish заканчивается успешно и загружает вашу работу на crates.io.

Проходит несколько дней, и вам прилетает новое уведомление с GitHub. Оказывается, кто-то открыл тему:

Читать далее

Проектирование спецификации OpenAPI

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

Привет, Хабр! Меня зовут Виктория Юльская, и я старший системный аналитик в Ozon.

Я думаю, здесь найдётся много людей, которые хоть раз работали с документацией API в Confluence. Да-да, те самые километровые страницы на каждый метод — с описанием всего и вся в виде текста, таблиц, диаграмм последовательности и т. д.

Зачастую такая документация API в Confluence устаревает ровно в тот момент, как её закончили писать. После передачи задачи в разработку, как только что-то непонятно, куда все идут? Правильно, к аналитику — «А как это работает? А что это значит? А что если...?».

Ну вот же дока, там все написано... но обычно никто не хочет читать огромную доку на метод, быстрее же спросить. И зачастую у самих аналитиков есть вопросики по актуальности этой документации (уже есть новые договорённости со встреч, комментарии в документации и т. д.).

Есть ли более эффективный способ ведения и поддержания документации API в актуальном состоянии? Давайте разбираться.

Читать далее

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