如何迭代使用路径设置的所有请求/响应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; }
}
我想要一个服务操作,我可以遍历所有设置路由,并且 检索:
是否有一些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中的简单属性。还有改进的余地......
答案 0 :(得分:1)
您是否查看了ServiceStack.Api.Swagger包(记录为here)?这听起来与你想要的非常相似。
如果Swagger UI无法为您提供服务,您可以使用ServiceStack.Api.Swagger包并将请求发送到/resources
及其相关URL,以获取JSON格式的所有元数据,然后根据您的需要处理这些数据。或者,如果您想在C#中编写内容,请参阅code以获取SwaggerApiService和SwaggerResourcesService,以了解它如何检索所有DTO和路由并提取有关它们的元数据。