我已经对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时,我似乎无法弄清楚如何指定使用哪个版本的路由(除了在初始化jsonclient时修改基本URL,这在所有版本中都不起作用我们的用例)。就好像DTO默认为1路线,即使有更多路线选项可用。
除了在帖子中手动指定“v2”路由之外,还有更好的方法来完成此默认路由行为吗?
答案 0 :(得分:0)
路线含糊不清,无法推断,因此您需要在呼叫站点传递,例如:
HTTP/1.1
基于消息的设计有助于设计和向后转发兼容的DTO,它们不需要版本控制,但是如果你必须版本检查ServiceStack的recommended versioning strategy。