powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Управление версиями Web API
25 сообщений из 39, страница 1 из 2
Управление версиями Web API
    #39687442
Lessyp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В интернете по поводу управления версиями апи в основном предлагается подход, при котором в одном проекте сосуществуют контроллеры из нескольких версий. Т.е. например HelloWorldControllerV1 и HelloWorldControllerV2. И апи будет переключаться между ними в зависимости от того, хэдер с запросом на какую версию пришел. Т.е. по-сути каша из контроллеров разных версий.
Хотелось-бы все-же иметь один проект, но с управлением версиями (в хэдерах). Можно-ли этого как-то достичь? Т.е. к примеру стоит у клиента версия v1, там есть путь /myservice/helloworld. Разработали новую v2 версию, и клиент теперь может по тому-же пути /myservice/helloworld получить либо первую версию либо вторую в зависимости от того, что запросил в хэдере?
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687455
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lessypклиент теперь может по тому-же путину а зачем тебе идти против всех?
Посмотри как гугл карты или яндекс карты или soap делают.
Все вроде делают
www.aaa/api/v1/......
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687475
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123www.aaa/api/v1/По идее, если клиент передает свою версию в заголовках, а адреса в клиенте менять не хочется, то можно наверное сделать миддлваре, которое будет добавлять версию в строку адреса. Ну и атрибут контроллера поправить [Route("api/v1/MyController")]
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687548
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Наверно.
Просто никто так почему то не усложняет.
В конвейре запросов вообще можно переписать весь урл, но наверно
Оверхедом считается. Больше потеряем чем приобретем.
Удачи аффтару!
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687566
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lessyp,

Нужен диспетчер, промежуточная точка, которая в ответ на запрос (я такая-та программа версии XXX, знакомая с АПИ версии YYY) будет выдавать подходящий API (url).
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687570
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LessypРазработали новую v2 версию, и клиент теперь может по тому-же пути /myservice/helloworld получить либо первую версию либо вторую в зависимости от того, что запросил в хэдере?

Совершенно точно так делать не нужно. Это нарушение концепции HTTP, что ни приведёт ни к чему хорошему. У каждой версии API должен быть отдельный URL.
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687690
Calabonga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно реализовать CustomControllerResover, который в процессе будет поставлять нужную версию. При таком подходе можно обработать любую ситуацию: и header, и cookie, и language, и role пользователя .... да всё что хочешь! И версию какую хочешь подсунуть на какой хочешь URL. Но лучше чтобы у каждой версии был свой URL... тебе правильно подсказали.
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687862
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lessyp,

берём книжку "Building APIs You Won't Hate" и читаем главу "API Versioning", там описано 6 подходов
ну или просто гуглим "API Versioning"

изобретать велосипед-то зачем?
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687867
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687878
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LessypТ.е. к примеру стоит у клиента версия v1, там есть путь /myservice/helloworld. Разработали новую v2 версию, и клиент теперь может по тому-же пути /myservice/helloworld получить либо первую версию либо вторую в зависимости от того, что запросил в хэдере?
Можно, этот подход называется Custom Request Header
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687886
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМожно, этот подход называется Custom Request Header

Таки лично я не советовал бы его использовать. Сложно настраивать и управлять. Практически не работает, когда API меняется путём композиции/декомпозиции методов.
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687891
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
+1
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687898
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAМожно, этот подход называется Custom Request Header

Таки лично я не советовал бы его использовать. Сложно настраивать и управлять. Практически не работает, когда API меняется путём композиции/декомпозиции методов.
По этому я и предлагаю почитать соответсвующую литературу и статьи для начала.
Всё уже сравнили до нас.

И выбрать более подходящий вариант для своей ситуации.
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687903
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Также автору подходит вариант Body and Query Params. Используется в Netflix, Google Data, PayPal, Amazon SQS.

А Custom Request Header подход используется, кстати, в Azure
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687905
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мы используем передачу номера версии через URI:
https://gethelp.wildapricot.com/en/articles/182#version
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687934
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
передача версии в урл самое имхо удобнее и очевидное

то что ТС можно сделать без проблем, но надо идти по простому и очевидному
новое апи часто меняет методы, а не просто внутри переписывает и другое дто возвращает
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687948
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuпередача версии в урл самое имхо удобнее и очевидное
Это самое общепринятое Со своими минусами:
- технически это не RESTful
- от клиента требуются определённые усилия по поддержке актуальности линков

А ТС как раз таки хочет, чтобы клиент не заморачивался с последними.
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687950
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuновое апи часто меняет методы, а не просто внутри переписывает и другое дто возвращает
А это тут при чём?
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687970
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА ТС как раз таки хочет, чтобы клиент не заморачивался с последними.

Для этого, как я уже сказал, можно сделать единственную точку (turn server), отвечающую какой API использовать клиенту.

GET: /turn/getapi?app=MyApp&ver=1.11&api=some-api&known-ver=1.0
RESPONSE: https://domain.com/some/api/v1.1

Используем полученный префикс для вызова АПИ. Решает не только задачи версионности.
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687975
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAА ТС как раз таки хочет, чтобы клиент не заморачивался с последними.

Для этого, как я уже сказал, можно сделать единственную точку (turn server), отвечающую какой API использовать клиенту.

GET: /turn/getapi?app=MyApp&ver=1.11&api=some-api&known-ver=1.0
RESPONSE: https://domain.com/some/api/v1.1

Используем полученный префикс для вызова АПИ. Решает не только задачи версионности.
Можно. Но это потребует переписывания приложений, что уже сейчас пользуются сервисами, что стоят у клиентов ТСа.

Или ты думаешь, что проект только начинается?
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39687984
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМожно. Но это потребует переписывания приложений, что уже сейчас пользуются сервисами, что стоят у клиентов ТСа.

Или ты думаешь, что проект только начинается?

Ну я в общем говорю :)

Для не публичного АПИ не вижу особенного смысла в версионности.
Хотя, если её заложить на базе URI, это могло бы принести пользу в различных ситуациях.
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39688102
Lessyp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttСовершенно точно так делать не нужно. Это нарушение концепции HTTP, что ни приведёт ни к чему хорошему. У каждой версии API должен быть отдельный URL.
нарушение концепции HTTP как раз вложение версий в урлы. Хотя это самый простой для разработки метод, но и самый неудобный для клиентов так как им придется переписывать конфиги с выпуском каждой новой версии
Еще вопрос, у кого-нибудь есть практический опыт реализации версионности "стандартным" методом, когда в одном проекте сосуществуют множество версий контроллеров? Именно такой подход настойчиво советует Майкрософт, но на первый взгляд он кажется крайне неудобным, кто-нибудь делал такие проекты, какие там подводные камни лежат на практике?
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39688104
Lessyp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuто что ТС можно сделать без проблем, но надо идти по простому и очевидному
новое апи часто меняет методы, а не просто внутри переписывает и другое дто возвращает
те методы что не изменились все равно оказываются с другим адресом в новой версии. Так наказывать своих клиентов не выглядит привлекательно
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39688108
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LessypЕще вопрос, у кого-нибудь есть практический опыт реализации версионности "стандартным" методом, когда в одном проекте сосуществуют множество версий контроллеров? Именно такой подход настойчиво советует Майкрософт, но на первый взгляд он кажется крайне неудобным, кто-нибудь делал такие проекты, какие там подводные камни лежат на практике?
А дайте ссылку на рекомендацию, если не сложно. Для меня это звучит как бред какой-то.

Выпускается новая версия, ставится на отдельные сервера, старая крутится на старых.
Клиенты постепенно переползают на новую. В итоге старая гасится.
...
Рейтинг: 0 / 0
Управление версиями Web API
    #39688109
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lessyp,

может Вы поясните нам, а что Вы вообще понимаете под новой/старой версией?
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Управление версиями Web API
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]