- Когда в моделях происходят критические изменения? Например, предположим, что есть свойства, которые должны быть отмечены обязательным атрибутом или свойство было переименовано, для них необходимо указать версии. Итак, добавим ли мы номер версии к имени класса, например «Student2407», или определим пространство имен как ApiModel.2407 и оставим имя класса как «Студент». Последнее имеет смысл, так что в остальной структуре имя объекта кажется подходящим.
- При управлении версиями уровня обслуживания мы копируем весь класс обслуживания, если существующая функция обслуживания имеет изменения, которые могут привести к поломке старой функции. контроллер, или мы добавим условие if else, чтобы решить, какой код выполнять. Например, если Add(int a, int b) в 2407 также выполняет деление a/b, но этого не следует делать в 2406, можем ли мы сказать if(v==2407){var c=a/b или мы клонируем весь код и просто добавляем a/b там, где нам нужно.
- Файл swagger.json преобразуется в SDK. Будет ли лучше, если эти разные модели будут иметь разное пространство имен или имя класса? т. е. может ли проект С# иметь одни и те же классы в разных версиях? Это будет отправлено в nuget, чтобы потребители нашего API могли его использовать. Я думал, что, поскольку мы получаем преимущества от классов типов, единственный способ различать — это использовать пространства имен, указывающие версию.
- Я спрашиваю, потому что прямо сейчас мы создаем swagger.json для каждой версии. поэтому будут созданы json 2406 и 2407, что означает два пакета nuget. Таким образом, SDK 2407 может не иметь API 2406, если у контроллера нет атрибута, определяющего обе версии.
Подробнее здесь: https://stackoverflow.com/questions/787 ... et-6-0-api