2014-09-26 61 views
2

我们正试图从Swagger转换为使用SSV4的本机元数据功能。但是在这样做的时候,api代就有问题了:ServiceStack V4 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?或者可能是元数据引擎?

在此先感谢...约旦

回答

0

我已经扩大了ServiceStack的元数据页面,包括通用和数组集合in this commit引用类型。

此更改可从ServiceStack v4.0.32 +即现在的available on MyGet

+0

对我们的实施进行了测试,并按预期工作。非常感谢...让我的一天! – jglassco 2014-09-28 02:07:31

+0

嗨@mythz - 如果可能的话,我想重新打开这个问题......就像在通用数组的第一层工作正常之前所证实的那样......但是如果存在多层数组,则元数据页面不会显示该课程的信息。 在我上面的例子中,考虑类型“ComplexType”包含一个成员,其中有“ComplexType2”的另一个通用列表。在这种情况下,ComplexType2将不会显示在元数据页面中。 你做的检查几乎需要递归或类似的花式吗?再次感谢 – jglassco 2014-12-05 21:43:24

+0

@jglassco请在https://github.com/ServiceStack/Issues上打开一个新的问题,并包含repro的问题模型。 – mythz 2014-12-05 21:50:28