ServiceStack遍历所有请求/响应DTO

时间:2014-01-31 20:11:40

标签: c# extjs servicestack sencha-architect servicestack-bsd

如何迭代使用路径设置的所有请求/响应DTO?

例如这样的路线:

[Route("/api/something", "GET")]
public class SomethingGetRequest : IReturn<List<Something>>
{
    public int SomethingId { get; set; }
}

和Response DTO是这样的:

public class Something
{
    public string A { get; set; }
    public int B { get; set; }
}

我想要一个服务操作,我可以遍历所有设置路由,并且 检索:

  • 请求网址
  • 班级名称
  • 请求属性
  • 响应DTO属性

是否有一些Servicstack以这种方式构建?

最后我想用它来自动生成ExtJS商店/模型。 我也对更好/替代方法感兴趣。

修改

以下是我提出的解决方案:gist

/extjs/javascript路由上,服务返回extjs store / models和 在/extjs/metadata路由上,服务返回一个带有商店/模型文件夹的zip文件,您可以将其放入新创建的Sencha Architect项目中。 模板基于Architect v.3.0.1.1343产生的内容。

这假设一条路线装饰如下:

[Route("/api/something", "GET", Summary="route description")]
public class SomethingGetRequest : IReturn<List<Something>>
{

    [ApiMember(Name = "SomethingId", ParameterType = "query", IsRequired = true, DataType = "int")]
    public string SomethingId { get; set; }

}

当前实现仅适用于请求/响应DTO中的简单属性。还有改进的余地......

1 个答案:

答案 0 :(得分:1)

您是否查看了ServiceStack.Api.Swagger包(记录为here)?这听起来与你想要的非常相似。

如果Swagger UI无法为您提供服务,您可以使用ServiceStack.Api.Swagger包并将请求发送到/resources及其相关URL,以获取JSON格式的所有元数据,然后根据您的需要处理这些数据。或者,如果您想在C#中编写内容,请参阅code以获取SwaggerApiService和SwaggerResourcesService,以了解它如何检索所有DTO和路由并提取有关它们的元数据。