【问题标题】:ServiceStack V4 API Documentation missing response types (in lists)ServiceStack V4 API 文档缺少响应类型(在列表中)
【发布时间】:2014-09-27 08:02:12
【问题描述】:

我们正在尝试从 Swagger 转换为使用 SSV4 的原生元数据功能。但是在这样做的过程中,api生成出现了问题:

问题似乎出在内部 SS 操作 BaseMetadataHandler .GetMetadataTypesForOperation(...) 中,它似乎没有检测到 List 中的复杂类型(并将它们与操作相关联)。例如,此请求/响应 dto 将不会显示“ComplexType”的文档:

[Route("/example", "GET")]  
    [DataContract]  
    public class Example : IReturn<Example Response>  
    {  
        [ApiMember(IsRequired = true)]  
        [DataMember(Order = 1, IsRequired = true)]  
        public Guid ExampleGuid { get; set; }  
    }  

    [DataContract]  
    public class ExampleResponse : IHasResponseStatus  
    {  
        [DataMember(Order = 1, IsRequired = false)]
        public List<ComplexType> Results{ get; set; }

        [DataMember(Order = 2, IsRequired = false)]
        public ResponseStatus ResponseStatus { get; set; }

    }

如果“ComplexType”是单数(不在列表中),则该类型会正确记录在元数据页面中。我是否错误地配置了这些 DTO?或者元数据引擎?

提前谢谢...乔丹

【问题讨论】:

    标签: c# servicestack


    【解决方案1】:

    我已经扩展了 ServiceStack 的元数据页面,以在 Generic 和 Array 集合 in this commit 中包含引用的类型。

    此更改可从 ServiceStack v4.0.32+ 获得,现在是 available on MyGet

    【讨论】:

    • 在我们的实现上进行了测试,它按预期工作。非常感谢...让我开心!
    • 嗨@mythz - 如果可能的话,我想和你重新讨论这个问题......正如之前确认的那样,它适用于第一级通用数组......但如果有多层数组,元数据页面不显示该类的信息。在上面的示例中,考虑类型“ComplexType”,其中包含一个成员,其中包含另一个通用列表“ComplexType2”。在这种情况下,ComplexType2 不会显示在元数据页面中。您所做的检查几乎需要递归或类似的东西?再次感谢,
    • @jglassco 请在github.com/ServiceStack/Issues 上打开一个新问题,并包括重现问题的模型。
    猜你喜欢
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 2014-12-28
    • 2020-12-12
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多