У нас есть некоторые функции Azure, доступные через управление API? Может ли Api Management автоматически предоставлять конечную точку /swagger, как это делает пакет Swashbuckle для API в Asp.Net.
Чтобы автоматизировать это, мы можем использовать API-интерфейсы Azure ARM, docs.microsoft.com/en-us/rest/api/apimanagement/apis/…
В основном я думал о раскрытии той же функциональности, что и пакет Swashbuckle, генерирующий страницы чванства для Asp.Net. Добавил это в вопрос.


Управление API Azure не может автоматически создать страницу swagger. Управление API Azure может только предоставить вам файл определения API. Затем вы можете использовать другие инструменты (такие как Интерфейс Swagger) с файлом определения для создания нужной вам страницы.
Кроме того, управление API Azure предоставило вам пользовательский интерфейс (https://youapimanagementname.portal.azure-api.net), чтобы рассказать вам, как использовать все API.
Хорошая идея, но я не уверен, что мы сможем предоставить ее таким образом пользователям API от наших партнеров.
APIM имеет вторую необязательную конечную точку управления: docs.microsoft.com/en-us/rest/api/apimanagement/…. После включения ее можно использовать так же, как ARM, для экспорта определений API. ИТ-отдел использует другой механизм аутентификации, поэтому он больше подходит для пользователей, у которых нет удостоверения ARM.
Вы можете создать токен SAS для своих пользователей. Затем они могут вызывать с ним остальные API. Дополнительные сведения см. в статье docs.microsoft.com/en-us/rest/api/apimanagement/….
Вы можете открыть свою документацию openapi через сам API. Документацию по API можно запросить на
Просто создайте дополнительную операцию (например, openapi.yaml) в своем API, вызовите указанный выше URL-адрес через настраиваемую политику и верните результат. Вы можете использовать следующую политику
<policies>
<inbound>
<base />
<send-request mode = "new" response-variable-name = "result" timeout = "300" ignore-error = "false">
<set-url>@("https://management.azure.com/subscriptions/{{azure-subscriptionid}}/resourceGroups/{{azure-resourcegroup}}/providers/Microsoft.ApiManagement/service/" + context.Deployment.ServiceName + "/apis/" + context.Api.Id + "?export=true&format=openapi&api-version=2021-01-01-preview")</set-url>
<set-method>GET</set-method>
<authentication-managed-identity resource = "https://management.azure.com/" />
</send-request>
<return-response>
<set-status code = "200" reason = "OK" />
<set-header name = "Content-Type" exists-action = "override">
<value>application/yaml</value>
</set-header>
<set-body>@((string)(((IResponse)context.Variables["result"]).Body.As<JObject>()["value"]))</set-body>
</return-response>
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
Дополнительную информацию можно найти на странице https://www.devprotocol.com/2021/07/20/expose-openapi-documentation-on-azure-api-management.html.
Привет. Вы имеете в виду, как импортировать API с помощью swagger, docs.microsoft.com/en-us/azure/api-management/…