gpt4 book ai didi

servicestack - ServiceStack 中的 REST 路由

转载 作者:行者123 更新时间:2023-12-03 17:22:52 27 4
gpt4 key购买 nike

我刚开始学习 REST 和 ServiceStack,还有一些关于 Route 的东西我只是不太明白。例如,如果我们从 GitHub 教程中获取非常基本的 HelloWorld 示例并重新编写它以返回 User 的集合对象。这是示例:

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 };
}
}

现在一切正常,这里没有问题。但现在我想添加另一个路由 url,如: /Hello/{name}/Address
实际上,对这个 url 的调用 (GET) 将返回一个 UserAge 选择范围。我怎么能做到这一点?我应该添加另一个 Service ?如果网址是:
/Hello/{name}/{age}/Address
好像有什么没看懂。。。。。。

最佳答案

有关 Routing in ServiceStack 的详细信息,请参阅此较早的答案. ServiceStack's New API 中的智能路由部分解释更多选项和不同的优先级。

您的示例存在一些问题。第一个 ServiceStack 文本序列化器仅支持 公共(public)属性 所以您需要更改您的用户模型以使用公共(public)属性而不是字段,例如:

public User
{
public string Name { get; set; }
public string Address { get; set; }
public int Age { get; set; }
}

接下来, Interfaces on DTOs are a bad idea因为没有充分的理由。它们仍然受支持,但最终可能会产生不良结果。使用像 List<T> 这样的具体集合它提供了更多的实用程序,例如:
public class HelloResponse
{
public List<User> Results { get; set; }
}

还有路线 应该匹配 DTO 上的属性名称 正是 ,它们在匹配请求路径时不区分大小写,但它们需要映射到确切的属性名称,例如:
/Hello/{Name}/{Age}/Address

关于servicestack - ServiceStack 中的 REST 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13904477/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com