Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Схема REST API для Postman и не только

    Схема REST API для Postman и не только

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Схема REST API для Postman и не только, RouterOS
     
    Amm0
    Guest
    #1
    0
    11.09.2023 03:20:00
    Хотя это не «скрипт», у меня есть реализация на JavaScript, которая через /system/console по REST генерирует RAML 1.0 схему. Просто раньше я это здесь не выкладывал, вот теперь делюсь. Это не идеально, скорее около 90%. Например, особенно с аргументами — как и у ChatGPT, может допускать пару ошибок, но в основном всё работает, особенно POST-запросы. В большинстве случаев по типам не придирается — почти все помечены как «any». Есть баги в /console/inspect при использовании request=syntax — некоторые падают, поэтому синтаксических данных мало используется. Есть все пакеты, кроме calea, возврат атрибутов «неточный» — просто отмечен как «any». JSON-аргументы в основном списки (возможно, не всегда), но типы по-прежнему «any». Поскольку схема генерируется автоматически, в ней нет «примеров» или «документации», только эндпоинты и аргументы. GET-запросы не полностью описаны для корневых команд (GET /ip/address) — там должны быть указаны query-параметры и вывод в виде массива. Некоторые настройки по умолчанию для Postman можно улучшить, но не очень понятно, как это контролировать через RAML… Наверняка есть и другие недостатки… В любом случае — хороший старт для более формализованной схемы. Хотя это и не OpenAPI/swagger напрямую, RAML отлично импортируется в Postman.

    RAML-схема для скачивания  
    Сгенерированную RAML-схему для импорта (~6 МБ, 250 тысяч строк YAML) можно скачать по ссылке: https://tikoci.github.io/restraml  
    Проверяйте сайт на наличие новых версий. Более свежие версии лежат в GitHub-проекте, но оригинальные файлы по состоянию на момент этого поста остались тут:  
    7.12 — https://tikoci.github.io/restraml/routeros.raml  
    7.13 — https://tikoci.github.io/restraml/routeros.7.13.raml

    Использование Postman… (и других HTTP-инструментов)  
    Чтобы использовать в Postman:  
    - Перейдите в секцию API  
    - Нажмите кнопку «Import» вверху секции API  
    - Загрузите RAML-файл из вышеуказанных ссылок  
    - Нажмите «View import setting» и выберите «Schema», а не стандартный «example» в качестве источника для данных запросов/ответов Postman  
    - Нажмите иконку назад в левом верхнем углу, затем «Import»  
    - Подождите (Postman показывает прогресс в статус-баре)  
    - Перейдите в секцию «Collections» слева, увидите новый RouterOS

    Работать с Postman дальше — дело пользователя. По крайней мере, нужно добавить:  
    - «Basic Auth» должен быть настроен либо на коллекцию, либо другой уровень  
    - {{baseUrl}} надо задать IP вашего роутера через переменные окружения в Postman

    Конвертация RAML в OpenAPI/swagger  
    Этот сайт вроде позволяет взять RAML-схему и получить из неё OpenAPI:  
    https://mulesoft.github.io/oas-raml-converter/  
    Сгенерированная OpenAPI-схема:  
    https://tikoci.github.io/restraml/routeros-openapi3.json  
    Хотя я мало тестировал, по крайней мере в Postman она загружается. Наверняка есть другие CLI-инструменты для этого, но главное, что Postman поддерживает RAML — это было важно.

    JavaScript для генерации RAML  
    В основном для справки. Генерация занимает около 30 минут и выполняет свыше 30 тысяч REST-запросов на мощном MacBook. Исходники JS доступны в GitHub-проекте:  
    https://github.com/tikoci/restraml  
    Код не изящный, но работает. Пока не обернул в контейнер, если времени хватит — займусь позже.  
    P.S. Можно было написать RouterOS скрипт, но 4К кусков по 6 МБ звучит не очень весело — хотя RSC-скрипт или контейнер теоретически тоже подойдут. JS-шный способ был проще и быстрее, так как большую часть работы я уже сделал раньше.

    Postman в VSCode с RouterOS REST…  
    Использование расширения Postman для VSCode тоже работает, как только схема загружена:  
    Включая генерацию кода Postman из REST-схемы.

    Правки:  
    - Добавил TODO  
    - Исправил ссылки, чтобы использовать GitHub-проект вместо гита для скачивания RAML-схемы  
    - Добавил скриншот VSCode с плагином Postman  
    - Обновил URL для генерации OpenAPI схемы  
    - Обновил ссылки на GitHub-проект.
     
     
     
    brotherdust
    Guest
    #2
    0
    14.12.2023 21:04:00
    Было бы здорово, если бы MikroTik просто опубликовали спецификацию, вместо того чтобы заставлять делать всю тяжёлую работу самим. Я умолял их не использовать собственный REST API, а взять за основу общепринятый стандарт YANG. Тогда конфигурацию роутера можно было бы создавать и хранить в нейтральном формате, понятном для любого производителя, и преобразовывать в что-то, что понимает RouterOS. Очень жаль, что они отказались. Твоё решение здесь меня немного утешает, и за это я очень благодарен. Если нужна помощь — техническая документация, настройка тестов и так далее — пиши мне на GitHub https://github.com/brotherdust
     
     
     
    Amm0
    Guest
    #3
    0
    22.05.2024 19:45:00
    Я автоматизировал создание схем на GitHub и добавил новую страницу загрузок, где можно посмотреть схемы/документы для разных версий с 7.9 по 7.15rc4:  
    Downloads: https://tikoci.github.io/restraml  

    Исходники и другие детали здесь:  
    GitHub Project: https://github.com/tikoci/restraml  
    VSCode Online View: https://github.dev/tikoci/restraml  

    Гиковские подробности... Внутренности этой автоматизации довольно интересные (на мой взгляд) и, скорее всего, полезные для других автоматизаций с использованием GitHub и RouterOS. В частности, GitHub Action, который собирает схемы/документы и так далее, запускает CHR внутри самого GitHub, который используется для выполнения необходимых REST-запросов к /console/inspect.  

    В проекте на GitHub, а именно в разделе «Actions», можно увидеть все детали процесса генерации схем, где основную работу выполняет файл manual-docker-in-docker.yaml.  

    И правда, когда я начинал этот мини-проект, я всего лишь хотел «продеффать» дерево команд, чтобы увидеть, что изменилось в CLI между версиями. И в итоге понадобилось как-то запустить Docker^2 + QEMU + CHR...
     
     
     
    Amm0
    Guest
    #4
    0
    24.05.2024 15:20:00
    Я добавил интерфейс отображения различий на страницу загрузки схемы на GitHub, https://tikoci.github.io/restraml. Теперь там показываются команды и атрибуты, которые изменились между версиями RouterOS:
     
     
     
    EBRAddict
    Guest
    #5
    0
    28.09.2024 09:47:00
    Только что зарегистрировался, чтобы сказать спасибо за то, что поделились этим!
     
     
     
    Amm0
    Guest
    #6
    0
    17.07.2025 01:30:00
    Спасибо! Недавно я создал «генератор кода» для Postman, который преобразует JSON-запрос Postman в правильный /tool/fetch. Я всё ещё работаю над этим, и Postman должен принять это. Но этот проект позволит создавать «фрагменты кода» RouterOS /tool/fetch прямо из приложения Postman (и других инструментов).

    Обновление на июль 2025: curl2rsc больше не работает из-за закрытия glitch.com. Но я добавил веб-страницу, которая использует RouterOS Postman «codegen» для преобразования команды curl в команду RouterOS /tool/fetch, как часть серии «Scheme Tools» здесь.  
    Сайт для преобразования команды cURL в команду /tool/fetch

    Примечания:  
    _- URL может измениться в будущем, но сейчас он здесь.  
    Если никто долго не заходил на сайт, может понадобиться около 15 секунд, чтобы «прогреться», так как я использую бесплатный backend glitch.com. Перезагрузка страницы тоже может помочь._

    Случай использования: Обычно SaaS/облачные и подобные сайты дают какой-то пример curl в доках или интерфейсе, так что вышеописанный инструмент позволяет просто скопировать этот «curl» и получить, надеюсь, корректную команду /tool/fetch для использования. Внутри он преобразует curl в JSON-объект Postman, а мой RouterOS codegen конвертирует JSON в /tool/fetch (в меру возможностей fetch) и в несколько вариантов для удобного копирования в RouterOS.

    Попробуйте преобразовать какой-нибудь curl -X GET example.com и напишите мне здесь или на GitHub, если что-то конвертируется неправильно.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры