将API转移到另一个环境后,Swagger 2.0架构定义丢失

时间:2018-07-06 13:11:37

标签: azure swagger-2.0 azure-api-management

我们发现,使用管理API不能可靠地将API(最初使用Swagger 2.0模式导入)转移到其他环境。虽然我们的API似乎已成功传输,但是Swagger 2.0模式定义却丢失了。

我们使用Microsoft.Azure.Management.ApiManagement v.4.0.3-preview NuGet包来管理各种环境(API管理实例)中API管理资源的生命周期。

架构定义具有很高的价值,因为我们的客户使用它们来生成强类型的客户端。

我们尝试专门查询管理API的原始模式定义(甚至使用参考REST API @ https://docs.microsoft.com/en-us/rest/api/apimanagement/apischema/get),并且在我们成功接收资源实体的同时,结果总是包含空值(应该在其中定义模式)。

我们是否缺少某些内容,还是应该使用其他管理API编写? (意识到我们已经尝试过ApiSchema API并看到了空值,所以我们可能还没有考虑其他方法)

随附了两个屏幕截图,以说明原始的Swagger 2.0模式定义(导入后)和将API转移到另一个环境后缺少的模式定义。

Development: Swagger 2.0 schema definitions present

Production: Swagger 2.0 schema definitions missing

  1. 2018年7月:

根据您的观点,有两种方法可以确定错误的位置:

  1. 该错误是由以下文件中的JSON映射错误引起的:

https://github.com/Azure/azure-sdk-for-net/blob/psSdkJson6/src/SDKs/ApiManagement/Management.ApiManagement/Generated/Models/SchemaContract.cs

  • 第69行说:[JsonProperty(PropertyName = "properties.document.value")]
  • 应为:[JsonProperty(PropertyName = "properties.document")]

请注意,在JSON结果反序列化期间使用的JSON映射有所不同。

REST API https://docs.microsoft.com/en-us/rest/api/apimanagement/apischema/get不会以映射到[JsonProperty(PropertyName =“ properties.document.value”)]的JSON结构进行响应,如在第69行的SchemaContract类型上所见(见上文)。 / p>

  1. 该错误是由REST服务未响应预期的JSON模式引起的:

预计REST API https://docs.microsoft.com/en-us/rest/api/apimanagement/apischema/get将返回具有以下架构的文档:

{
  "id": "..",
  "type": "Microsoft.ApiManagement/service/apis/schemas",
  "name": "ec12520d-9d48-4e7b-8f39-698ca2ac63f1",
  "properties": {
    "contentType": "application/vnd.ms-azure-apim.xsd+xml",
    "document": {
      "value": "…"
    }
  }
}

但是,实际响应中包含的文档{..}片段与预期的不同。

0 个答案:

没有答案