Используя PowerShell, как мне создать API для службы управления API с версией в сегменте пути? - PullRequest
0 голосов
/ 04 сентября 2018

Я могу создать API, используя powershell, следующим образом

New-AzureRmApiManagementApi -Context $azContext -ApiId $apiId -Name $apiName -ServiceUrl "https://myapp-dev-apims.azure-api.net/${subDomainName}" -Protocols @("https") -Path $subDomainName

Однако этот командлет не создает версию. Похоже, мне нужно использовать

New-AzureRmApiManagementApiVersionSet

Однако, не очень хорошо задокументировано, как это сделать, когда вы хотите добавить версию, используя сегмент пути, такой как myApi.com/cart/v1.

.

При создании версии на портале говорится: «Управление версиями создает новый API. Этот новый API связан с существующим API через схему управления версиями. Выберите схему управления версиями и выберите номер версии для своего API:"

Нужно ли мне создавать новый API с помощью New-AzureRmApiManagementApi, снова во второй раз? Это смущает.

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

Используя только powershell, как мне создать API и версию в одном скрипте? Помощь приветствуется. Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Чтобы создать версионный API, сначала нужно создать набор версий. Вы нашли для этого командлет Powershell. Однако, глядя на New-AzureRmApiManagementApi, кажется, что вы не можете указать versionsetid в качестве параметра, который необходим для связи набора версий с API.

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

Для вдохновения вы можете взглянуть на это сообщение в блоге: https://blog.eldert.net/api-management-ci-cd-using-arm-templates-linked-template/

0 голосов
/ 05 сентября 2018

При создании версии на портале говорится: «Управление версиями создает новый API. Этот новый API связан с существующим API через схему управления версиями. Выберите схему управления версиями и выберите номер версии для своего API:»

Правильно сказано: если вы Add version на портале, он создаст новый API, просто в интерфейсе пользователя он будет выглядеть как в исходном API. Вы можете проверить их в обозревателе ресурсов , в версии API будет "apiVersion": "xx". После добавления версии он добавит новый API в apis и автоматически создаст набор версий в api-version-sets, см. Скриншот. Согласно моему тесту, команда New-AzureRmApiManagementApiVersionSet просто создает в api-version-sets, а не создает в apis, поэтому вы не можете получить с ней то, что хотите.

enter image description here

Кроме того, я добавляю версию на портал и использую Fiddler для перехвата запроса. По сути, он вызывает тот же REST API с созданием нового API.

enter image description here

Некоторые обходные пути для вас :

1. Как вы упомянули, создайте API и добавьте версию на портале вручную.

2. Попробуйте использовать New-AzureRmResource для создания версии API.

3.Используйте PowerShell Invoke-RestMethod для вызова REST API .

...