gpt4 book ai didi

azure - 导出所有 API 名称 Azure APIM

转载 作者:行者123 更新时间:2023-12-03 06:39:31 27 4
gpt4 key购买 nike

我正在尝试导出存储在 Azure APIM 中的 API 的所有 URL 端点。

我需要以 [POST] 格式列出它们:https://apim-resource-name.azure-api.net/api-name/api-function或类似的东西,所以我尝试首先枚举所有端点和可以使用的动词,就像 SwaggerUI 或 OpenAPI 文档之一可能显示的那样。

到目前为止,我已经有了这段代码,但无法获得我想要的输出,我是否走在正确的轨道上,或者是否有更简单的方法可以通过 UI 来做到这一点?我也尝试过导出模板并解析脚本,但对于此任务来说似乎过于复杂。

#az login

$token = az account get-access-token | ConvertFrom-Json
$token = $token.accessToken -replace "`n","" -replace "`r",""
$headers = @{Authorization="Bearer $token.accessToken"}

$subscriptionId = 'subscriptionid'
$resourceGroupName = 'resourcegroupname'
$resourceName = 'resourcename'
$apiName = 'apiname'

$url_getapiexport = "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.ApiManagement/service/$resourceName/apis/$apiName`?format=swagger-link&export=true&api-version=2021-08-01" #GET
$url_getapiexport
#Invoke-RestMethod -Uri $url_getapiexport -Method GET -Headers @{Authorization="Bearer $token"} -ContentType "application/json"

$url_getapibytags = "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.ApiManagement/service/$resourceName/apisByTags?&includeNotTaggedApis=true&api-version=2021-08-01" #GET
$url_getapibytags
$api_tags = Invoke-RestMethod -Uri $url_getapibytags -Method GET -Headers @{Authorization="Bearer $token"} -ContentType "application/json"
$api_tags
foreach ($api in $api_tags) {
write-host API: $api.value.api.name
}

最佳答案

因此,如果您想导出所有 APIM API 及其服务 URL,您可以这样做(替换 xxx 具有正确的值)。 PHP 中的示例

<?php
echo "[INFO] API Names and Service Urls \n\n";

$apiList = shell_exec('az apim api list --resource-group "xxx" --service-name "xxx" ');
$apis = json_decode($apiList, true);
$cli = "az rest --method get --url";

foreach ($apis as $api)
{
$name = $api["name"];
$apiRequest = "$cli " . "\"https://management.azure.com/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.ApiManagement/service/xxx/apis/$name?api-version=2021-08-01\"";

$json = shell_exec($apiRequest);
$apiInfo = json_decode($json, true);

$displayName = $apiInfo["properties"]["displayName"];
$serviceUrl = $apiInfo["properties"]["serviceUrl"];

printf("%s: %s \n", $displayName, $serviceUrl);
}

?>

关于azure - 导出所有 API 名称 Azure APIM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74616963/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com