В данной статье мы сгенерируем powershell script из схемы OpenAPI на примере API RUVDS. Так же рассмотрим, как заставить сгенерированный код работать под powershell 5.1, который встроен в Windows 10/11.
PowerShell имеет несколько преимуществ при работе с API, которые делают его удобным и эффективным инструментом для таких задач:
- Удобство и простота использования: PowerShell обладает интуитивно понятным синтаксисом, что облегчает написание и чтение скриптов для взаимодействия с API.
- Интеграция с .NET: PowerShell построен на платформе .NET, что позволяет легко использовать мощные библиотеки и классы .NET для выполнения различных задач, связанных с API.
- Встроенные cmdlet: PowerShell предлагает множество встроенных командлетов (cmdlet), таких как Invoke-RestMethod и Invoke-WebRequest, которые значительно упрощают отправку HTTP-запросов и обработку ответов.
- Удобная работа с JSON: PowerShell имеет встроенные функции для работы с JSON, что упрощает парсинг и генерацию JSON-данных, часто используемых в API.
- Автоматизация и скриптинг: PowerShell идеально подходит для автоматизации задач, связанных с API, благодаря своим мощным возможностям по написанию скриптов и управления процессами.
Генерация powershell script
Для генерации кода необходимо установить OpenAPI Generators. Как это сделать под Windows подробно рассказано в нашей статье: OpenAPI Generator: как установить и настроить.
Заходим на сайт с документаций API RUVDS: https://ruvds.com/api-docs/ и скачиваем файл ruvds-api-v2.yaml
Теперь мы можем сгенерировать powershell script с настройками по умолчанию.
npx @openapitools/openapi-generator-cli generate -i ruvds-api-v2.yaml -g powershell
На сайте генератора https://openapi-generator.tech/docs/generators/powershell перечислены настройки, которые можно применять при генерации кода. Ниже перечислены некоторые из настроек:
- apiNameSuffix: Суффикс, который будет добавлен к именам API. Полезно для избежания конфликтов имен.
- packageName: Имя пакета для сгенерированного модуля PowerShell.
- packageVersion: Версия пакета для сгенерированного модуля.
Для того, чтобы использовать нужные настройки генератора, нужно создать файл, powershell.yaml (имя может быть произвольным), и перечислить в нём необходимые настройки:
apiNameSuffix: "Api"
packageName: "MyGeneratedModule"
packageVersion: "1.0.0"
После этого передадим файл с настройками при генерации powershell script.
npx @openapitools/openapi-generator-cli generate -i ruvds-api-v2.yaml -g powershell -c powershell.yaml
Использование сгенерированного кода под Windows
В Windows 10/11 по-умолчанию установлен powershell 5.1. OpenAPI Generator генерирует код для версий powershell >= 6.2. Есть 2 варианта решения:
- Скачать и установить powershell 7.4 c сайт Microsoft. https://learn.microsoft.com/en-us/powershell/scripting/whats-new/migrating-from-windows-powershell-51-to-powershell-7?view=powershell-7.4
- Зайти в папку со сгенерированный кодом, и в файле Build.ps1 закомментировать строку
PowerShellVersion = '6.2'
API RUVDS поддерживает возможность работы под powershell 5.1 при помощи кода, сгенерированного OpenAPI Generator.
Для отправки запросов к API RUVDS нужно получить токен по адресу: https://ruvds.com/ru-rub/my/settings/api. Более подробная инструкция получения токена в статье cURL API.
Создадим скрипт который получает баланс пользователя.
- Создадим в директории со сгенерированным кодом файл ruvds-get-balance.ps1.
- В файл добавим следующий код:
.\Build.ps1
Import-Module -Name '.\src\PSOpenAPITools'
$Configuration = Get-Configuration
$Configuration.AccessToken = 'Token from https://ruvds.com/my/settings/api'
Invoke-BalanceGet
В итоге получим баланс пользователя.