ServiceStack .net 客户端 - 如何使用具有多个路由的请求 DTO
ServiceStack .net client - how to use request DTOs with multiple routes
我像这样对 DTO 进行了版本控制(无论好坏):
[Route("/v1/login", Verbs = "POST")]
[Route("/v2/login", Verbs = "POST")]
[DataContract]
public class Login : IReturn<LoginResponse>
{
[DataMember( IsRequired = true)]
public string Username { get; set; }
[DataMember( IsRequired = true)]
public string Password { get; set; }
[DataMember( IsRequired = false)]
public string Key{ get; set; }//added for v2
}
我的问题是,当通过 .net 客户端使用 api 时,我似乎无法弄清楚如何指定要使用的路由版本(除了修改基础 url 时初始化 jsonclient,这在我们所有的用例中都不起作用)。就好像 DTO 默认为 1 条路线,即使有更多路线选项可用。
除了在 post 期间手动指定 "v2" 路由之外,是否有更好的方法来完成此默认路由行为?
路由不明确且无法推断,因此您需要在调用站点传递它,例如:
var response = client.Post<LoginResponse>("/v2/login", new Login { .. })
基于消息的设计有助于设计不需要版本控制的向后和向前兼容的 DTO,但如果您必须进行版本控制,请查看 ServiceStack 的 recommended versioning strategy。
我像这样对 DTO 进行了版本控制(无论好坏):
[Route("/v1/login", Verbs = "POST")]
[Route("/v2/login", Verbs = "POST")]
[DataContract]
public class Login : IReturn<LoginResponse>
{
[DataMember( IsRequired = true)]
public string Username { get; set; }
[DataMember( IsRequired = true)]
public string Password { get; set; }
[DataMember( IsRequired = false)]
public string Key{ get; set; }//added for v2
}
我的问题是,当通过 .net 客户端使用 api 时,我似乎无法弄清楚如何指定要使用的路由版本(除了修改基础 url 时初始化 jsonclient,这在我们所有的用例中都不起作用)。就好像 DTO 默认为 1 条路线,即使有更多路线选项可用。
除了在 post 期间手动指定 "v2" 路由之外,是否有更好的方法来完成此默认路由行为?
路由不明确且无法推断,因此您需要在调用站点传递它,例如:
var response = client.Post<LoginResponse>("/v2/login", new Login { .. })
基于消息的设计有助于设计不需要版本控制的向后和向前兼容的 DTO,但如果您必须进行版本控制,请查看 ServiceStack 的 recommended versioning strategy。