Как развернуть swagger из Arm Template в управление API Azure, используя «contentFormat»: «swagger-json» - PullRequest
0 голосов
/ 09 апреля 2019

Как развернуть swagger из шаблона ARM в Azure API Management с помощью параметра «contentFormat»: «swagger-json»

https://docs.microsoft.com/en-us/azure/templates/microsoft.apimanagement/2018-06-01-preview/service/apis

    "contentFormat": "swagger-json",
    "contentValue": "D:\\tempvsts\\APISwagger\\APISwagger\\swagger.json",

Когда я запускаю это, яполучить следующую ошибку

«message»: «Ошибка (ы) синтаксического анализа: при анализе значения обнаружен неожиданный символ: D. Путь '', строка 0, позиция 0."

Обратите внимание, что я использовал опцию ниже, и она работает

"contentFormat": "swagger-link-json",

Полный шаблон ARM

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "ApimServiceName": {
      "type": "string"
    }
  },
  "variables": {
  },
  "resources": [
    {
      "type": "Microsoft.ApiManagement/service/apis",
      "name": "[concat(parameters('ApimServiceName'), '/animalAPI4')]",
      "apiVersion": "2018-06-01-preview",
      "scale": null,
      "properties": {
        "displayName": "HTTP animal API",
        "apiRevision": "1",
        "description": "API Management facade for a very handy and free online HTTP toolsds",
        "serviceUrl": "https://animailhttpbin.org",
        "path": "animals4",
        "contentFormat": "swagger-json",
        "contentValue": "D:\\tempvsts\\APISwagger\\APISwagger\\swagger.json",
        "apiVersionSet": {
          "id": "[concat(resourceId('Microsoft.ApiManagement/service', parameters('ApimServiceName')), '/api-version-sets/versionset-animal-api4')]"
        },
        "protocols": [
          "https"
        ],
        "authenticationSettings": null,
        "subscriptionKeyParameterNames": null,
        "apiVersion": "v1"
      },
      "dependsOn": [
      ]
    }

  ]
}

1 Ответ

0 голосов
/ 30 апреля 2019

Как упомянуто 4c74356b41, необходимо использовать значение содержимого JSON в качестве экранированной строки.

Ваш чванливый JSON будет выглядеть примерно так

{ "swagger":"2.0", ... }

Итак, он перейдет в вашШаблон ARM, как это

{
  ...
  "contentFormat": "swagger-json",
  "contentValue": "{ \"swagger\":\"2.0\", ... }",
  ...
}
...