1

如何遍历使用路由设置的所有请求/响应 DTO?

例如这样的路线:

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

并像这样响应 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路由上,服务返回一个带有 store/model 文件夹的 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 中的简单属性。有改进的余地...

4

1 回答 1

1

您是否查看过ServiceStack.Api.Swagger包(在此处记录)?这听起来和你想要的很相似。

如果 Swagger UI 无法开箱即用,您可以使用 ServiceStack.Api.Swagger 包并向/resources其相关 URL 发送请求,以获取 JSON 格式的所有元数据,然后根据您的需要处理该数据. 或者,如果您想用 C# 编写一些东西,请查阅 SwaggerApiService 和 SwaggerResourcesService 的代码,了解它如何检索所有 DTO 和路由并提取有关它们的元数据。

于 2014-01-31T21:47:12.830 回答