如何使用自动查询自定义路由

时间:2014-07-08 18:39:23

标签: servicestack

在类似于Auto Query documentation示例项目的项目中使用ServiceStack EmailContacts中的第一个示例(即ServiceModel和ServiceInterface的单独项目),如何注册自定义路由&#34 ; /电影"由Route属性定义?

[Route("/movies")]
public class FindMovies : QueryBase<Movie>
{
    public string[] Ratings { get; set; }
}

通常,在实例化AppHostBase时,可以通过传递ServiceInterface程序集来注册这些自定义路由:

public AppHost() : base("Email Contact Services", typeof(ContactsServices).Assembly) {}

但是,FindMovies请求DTO没有关联服务,因此不会被包含在内。没有注册路线。

如果我通过typeof(FindMovies).Assembly代替typeof(ContactsServices).Assembly或者除了{{1}}之外,那么预定义的路线将被注册(即显示在元数据,邮递员等中),但自定义路线是仍然没有注册(即没有出现在元数据,邮递员等)。

当没有服务且ServiceModel和ServiceInterface位于不同的项目中时,使用属性注册自定义路由的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

这些问题应该在v4.0.24 +现在available on MyGet解决。

有一个新的AutoQueryFeature.LoadFromAssemblies属性,用于指定要扫描IQuery请求DTO的其他程序集列表。这会自动查找定义了其他请求DTO的程序集,因此在大多数情况下无需执行任何操作,因为它可以自动查找您的查询服务。

查询DTO的路线现在应该出现在元数据页面以及Swagger和Postman元数据API上。