я версированы DTOs (лучше или хуже), как это:ServiceStack клиент .net - как использовать запрос DTOs с несколькими маршрутами
[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 клиента, я возможно, не выясняют, как указать, какую версию маршрута использовать (кроме изменения базового url при инициализации jsonclient, который не работает во всех наших случаях использования). Как будто DTO по умолчанию имеет 1 маршрут, даже если доступно больше параметров маршрута.
За исключением того, что вручную указывается маршрут «v2» во время сообщения, существует ли лучший способ выполнить это поведение по умолчанию по умолчанию?
Задание клиенту указания маршрута вручную при каждом вызове выше V1 кажется пустым, особенно когда вся связанная информация маршрутизации привязана к этому DTO (только отсутствующая информация о версии). Если я получу время, я попытаюсь построить метод извлечения правильного маршрута из DTO на основе указанной версии и отправьте пример здесь. Я понимаю, что управление версиями является относительным, поэтому может не иметь смысла строить это в платформе клиента SS, но, похоже, имеет смысл (по крайней мере, некоторые) наших реализаций. Спасибо за ответ! – jglassco
@jglassco справа, но это не рекомендуемая стратегия управления версиями, [это] (http://stackoverflow.com/a/12413091/85785), которая не требует явной поддержки, поскольку версия, естественно, заполняется в конструкторе , Добавить ServiceStack Reference также поддерживает добавление [неявного номера версии в Generated DTO's] (https://github.com/ServiceStack/ServiceStack/wiki/CSharp-Add-ServiceStack-Reference#addimplicitversion). – mythz