我刚开始学习REST和ServiceStack,并且有一些关于Route
的内容,我只是不太明白。例如,如果我们从GitHub教程中获取非常基本的HelloWorld示例,并重写它以返回User
对象的集合。这里是例子:ServiceStack中的REST路由
public User
{
public string Name;
public string Address;
public int Age;
}
// Hello - request object without [Route] attribute
public class Hello
{
public string Name { get; set; }
}
public class HelloResponse
{
public IEnumerable<User> Result {get;set;}
}
public class HelloService : Service
{
public object Any(Hello request)
{
return new HelloResponse { // Collection of User object };
}
}
现在一切工作正常,没有问题在这里。但现在我想添加另一个路由地址,如:/Hello/{name}/Address
其实这个调用(GET)到这个网址将返回Age
参数选择单个User
。我如何做到这一点?我应该添加另一个Service
?而且如果该网址是:
/Hello/{name}/{age}/Address
看来我不明白的地方.....
感谢您的关注,但似乎我误解了'Route.Add'函数。如果我错了,请纠正我的错误! Route.Add的模式是:Route.Add(“/ /{DTO-field-name}/{DTO-field-name} “)。在客户端,它被序列化为完整的DTO对象,其字段设置为url,并在服务器上反函数化,其参数为DTO类型和实际的HTML动词(POST/GET)?这通常是正确的吗? –
Jasper
'Route.Add()'和'[Route]'属性完全相同。即它们都适用于请求DTO,但路由本身可以是你想要匹配的任何文本文字。 Route中的变量需要映射到Request DTO字段。 –
mythz