我想创建一个端点作为查询服务的前端,我想支持一个场景,可以通过查询字符串参数将任意数量的参数传递给服务。
这是我想要的那种网址:
/queries/MyQuery?argument1=value&arg2=value
DTO对象结构本身相当简单(Dictionary<string, object>
之类的属性),但我仍然坚持路径应该是什么样子。这可能是通过RouteAttribute还是我需要转向另一个方向?
答案 0 :(得分:3)
这是解释Routing in ServiceStack的好答案。
只有 PathInfo 是路由的一部分,所有路由/服务上的请求DTO也会根据QueryString / FormData等上的请求参数自动填充。
因此,如果您知道QueryString将是什么,您可以将其添加为Request DTO上的属性,它们将自动填充。
如果你不知道它们是什么,但你仍然想要访问QueryString,你可以从你服务的base.Request
属性中获取它,例如:
class MyServices : Service
{
public object Get(MyQuery request)
{
foreach (var entry in base.Request.QueryString) {
...
}
}
}