В данном руководстве мы подробно рассмотрим, как можно "подружить" 1С:Предприятие со Swagger (OpenAPI) для создания интерактивной, понятной и хорошо документированной API для ваших HTTP-сервисов. Мы изучим все шаги, начиная от понимания концепций Swagger до настройки веб-сервера IIS и лучших практик оформления документации.
Прежде чем погрузиться в технические детали, давайте разберемся с основными понятиями. Swagger (OpenAPI) – это не просто инструмент, а целая спецификация, язык описания RESTful API, который не зависит от конкретного языка программирования. Его главная цель — сделать REST API понятным как для машин, так и для людей без прямого доступа к исходному коду.
Когда мы говорим "Swagger", мы часто подразумеваем набор инструментов, которые работают с этой спецификацией OpenAPI. К ним относятся:
Для 1С интеграция со Swagger означает возможность предоставить внешним системам удобный и стандартизированный способ взаимодействия с вашими HTTP-сервисами, при этом имея интерактивную и всегда актуальную документацию, а при необходимости наладить регулярную передачу данных между разными базами 1С организуйте автоматический обмен по расписанию без изменения их конфигураций.
Существуют два основных метода создания спецификации Swagger для любого API, которые мы можем рассмотреть для адаптации к 1С:
В контексте 1С мы чаще будем сталкиваться с подходом, схожим с "генерацией во время выполнения", используя специализированные решения или общие модули для формирования описаний.
Давайте перейдем к самому интересному – как сделать так, чтобы 1С и Swagger "подружились". Платформа 1С:Предприятие предоставляет возможности для создания HTTP-сервисов, которые могут быть основой нашего API. Для организации процесса документирования этих HTTP-сервисов с помощью Swagger существуют специальные решения. Для автоматизации этой задачи можно использовать готовый инструмент для создания и публикации Swagger.json средствами 1С.
Одним из таких примеров является проект на GitHub "swagger-1c". Этот проект позволяет генерировать документацию HTTP-сервисов прямо из конфигурации 1С. Рассмотрим основные шаги и концепции, которые он использует:
Мы создаем описания для наших HTTP-сервисов внутри общих модулей 1С. Важно соблюдать определенную структуру наименования. Наименование общего модуля должно соответствовать шаблону <Наименование_HTTP_сервиса>Описание. Например, если у нас есть HTTP-сервис МойСервис, мы создадим общий модуль с именем МойСервисОписание.
Внутри такого модуля мы описываем методы, параметры, схемы запросов и ответов, используя синтаксис, который может быть преобразован в спецификацию OpenAPI. Это позволяет нам централизованно управлять документацией прямо в 1С.
Для использования подобных решений, таких как "swagger-1c", нам потребуется установить его в нашу конфигурацию 1С. Обычно это делается следующим образом:
swagger).После установки расширения его функциональность становится доступной в нашей базе.
Хорошо документированный API – это не только описание, но и надежность. Мы можем реализовать проверку входящих запросов и исходящих ответов, чтобы гарантировать корректность данных. Для этой цели подойдет специализированная подсистема валидации запросов и ответов на соответствие схеме OpenAPI.
Для этого можно использовать обертки функций. Например, мы можем вызывать функции ПроверитьПараметры для валидации входящих данных и ПроверитьОтвет для валидации данных, которые мы отправляем в ответ. Это помогает поддерживать качество API и предотвращать ошибки.
Пример структуры модуля описания (концептуальный):
Предположим, у нас есть HTTP-сервис "Товары" с методом "ПолучитьСписок". В модуле ТоварыОписание мы можем определить что-то вроде:
// В общем модуле ТоварыОписание
Функция ПолучитьСпецификацию() Экспорт
Спецификация = Новый Структура;
Спецификация.Вставить("openapi", "3.0.0");
Спецификация.Вставить("info", Новый Структура("title,version", "API для товаров", "1.0.0"));
Спецификация.Вставить("paths", ПолучитьПути());
Возврат Спецификация;
КонецФункции
Функция ПолучитьПути()
Пути = Новый Структура;
// Описание метода GET /товары
Пути.Вставить("/товары", Новый Структура);
Пути["/товары"].Вставить("get", Новый Структура);
Пути["/товары"]["get"].Вставить("summary", "Получить список товаров");
Пути["/товары"]["get"].Вставить("description", "Возвращает полный список товаров с возможностью фильтрации.");
Пути["/товары"]["get"].Вставить("tags", Новый Массив);
Пути["/товары"]["get"].tags.Добавить("Товары");
// Параметры метода
Параметры = Новый Массив;
Параметр1 = Новый Структура;
Параметр1.Вставить("name", "фильтрПоГруппе");
Параметр1.Вставить("in", "query"); // Параметр в строке запроса
Параметр1.Вставить("description", "Фильтр товаров по группе");
Параметр1.Вставить("required", Ложь);
Параметр1.Вставить("schema", Новый Структура("type", "string"));
Параметры.Добавить(Параметр1);
Пути["/товары"]["get"].Вставить("parameters", Параметры);
// Ответы метода
Ответы = Новый Структура;
Ответ200 = Новый Структура;
Ответ200.Вставить("description", "Успешный ответ со списком товаров");
Ответы.Вставить("200", Ответ200);
Пути["/товары"]["get"].Вставить("responses", Ответы);
Возврат Пути;
КонецФункции
Конечно, реальные решения, такие как "swagger-1c", могут использовать более абстрактные и удобные механизмы для генерации этой структуры, скрывая часть ручного создания спецификации OpenAPI.
После того как мы подготовили наши HTTP-сервисы и настроили их описание, нам нужно опубликовать их на веб-сервере. Internet Information Services (IIS) – распространенный выбор для этих целей. Рассмотрим пошагово, как настроить IIS для публикации 1С и отображения Swagger UI.
Прежде всего, убедитесь, что IIS установлен на вашем сервере. Если нет, мы можем установить его различными способами:
Убедитесь, что установлены все необходимые функции, особенно связанные с ASP.NET и расширениями для веб-сервера, так как некоторые решения Swagger могут их использовать.
Следующий шаг – публикация нашей информационной базы 1С с HTTP-сервисами на веб-сервере.
Для обеспечения безопасности внешних соединений настоятельно рекомендуется использовать HTTPS. Для этого нам нужно установить соответствующий TLS-сертификат в IIS.
https443api.yourcompany.com)Иногда после публикации могут возникнуть проблемы с отображением Swagger UI (например, ошибка 404). Выясним возможные причины и пути решения:
swagger-ui непосредственно в корневом каталоге сайта публикации 1С или в отдельном виртуальном каталоге, к которому есть доступ.https://api.yourcompany.com/), мы можем настроить перенаправление. Это может быть сделано через файл web.config, настроив правило для перенаправления корневого запроса на путь к Swagger UI (например, /swagger/index.html).Цель не просто запустить Swagger, но и сделать документацию "красивой" – то есть понятной, удобной и функциональной. Следуйте этим лучшим практикам:
summary (краткое описание) и description (подробное описание) в спецификации OpenAPI.components/schemas). Хорошо документированные схемы помогают разработчикам понимать структуры данных и корректно их обрабатывать. Указывайте типы данных, обязательность полей, форматы и допустимые значения.example или examples. Это помогает разработчикам быстро понять ожидаемые данные и даже может использоваться для автоматической генерации тестовых случаев.tags). Например, все эндпоинты, связанные с товарами, могут быть сгруппированы под тегом "Товары". Это улучшает навигацию в Swagger UI./v1/, /v2/). Указывайте устаревшие эндпоинты или функции (deprecated: true), чтобы предупредить потребителей API.securitySchemes и security в спецификации.summary) должны быть лаконичными, по возможности не превышая 50 символов. Убедитесь, что все описания ясны и недвусмысленны.servers) в корневом объекте OpenAPI не пуст и содержит актуальные URL, по которым доступен ваш API (например, тестовая и продуктивная среды).Следуя этим рекомендациям, мы сможем создать не просто работающий, но и действительно "красивый" и удобный API на базе 1С, который будет легко интегрироваться с внешними системами и поддерживать высокий уровень документации.