我们发现,使用管理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转移到另一个环境后缺少的模式定义。
根据您的观点,有两种方法可以确定错误的位置:
[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>
预计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": "…"
}
}
}
但是,实际响应中包含的文档{..}片段与预期的不同。