如何为我的API产生波动,使返回类型的一个属性可以是多态的?

时间:2018-11-23 04:11:16

标签: asp.net-web-api swagger swagger-ui swashbuckle openapi

我正在尝试为我的Web API生成Swagger JSON,该Web API是使用Swashbuckle在C#中开发的。在某些情况下,我的返回类型的一个对象属性可以基于包含对象(鉴别符)中的字符串/枚举值是多态的。当我浏览了swagger文档和其他在线帮助时,发现我们可以基于同一对象中的属性但不包含对象来支持多态。以下是我的api响应示例。 OpenAPI规范是否支持此方案?我读到了Swagger 3.0中引入的OneOf属性,想知道这是我应该使用的解决方案吗?如果是这样,我们可以将OneOf与鉴别符一起使用吗?

在下面的示例代码中,基于枚举DeviceType,DeviceProperty可以是ABCDeviceProperties或XYZDeviceProperties。是否可以为返回或接受“设备”的api生成摇摇欲坠?

    public enum DeviceType {ABC, XYZ }
    public class Device
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string SerialNumber { get; set; }
        public DeviceType Type { get; set; }
        public DeviceProperties Properties { get; set; }
    }

    public class DeviceProperties
    {
        public string MemorySize { get; set; }
    }

    public class ABCDeviceProperties : DeviceProperties
    {
        public string Abc { get; set; }
    }

    public class XYZDeviceProperties : DeviceProperties
    {
        public string Xyz { get; set; }
    }

0 个答案:

没有答案