Версия по умолчанию для управления API - PullRequest
0 голосов
/ 12 сентября 2018

Я включил управление версиями для Azure API Management (APIM). Управление версиями основано на параметрах строки запроса (например, ?api-version=1.0). Цель использования строки запроса такова, что если пользователь не предоставит параметр, он по умолчанию будет использовать последнюю версию. Итак:

/api/operation?api-version=1.0 <- Goes to 1.0
/api/operation?api-version=1.1 <- Goes to 1.1
/api/operation                 <- Goes to 1.1 (assuming that is latest)

Однако создается впечатление, что APIM использует этот параметр в качестве индексатора, и если он не предоставлен, APIM не знает, какую версию использовать. Есть ли способ сообщить APIM, что, если параметр отсутствует, автоматически перейти к определенной версии?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Невозможно в Azure APIM.Версия API должна передаваться для каждого запроса.

0 голосов
/ 13 сентября 2018

Как только вы включите управление версиями API, все маршруты API будут явно версионированы.Это означает, что клиент не может запросить ресурс без явного предоставления версии API.

Чтобы ваш сценарий работал, вам нужно разрешить совпадать с версией API по умолчанию, когда клиент ничего не указывает.Вы можете настроить, как показано ниже:

service.AddApiVersioning( options => options.AssumeDefaultVersionWhenUnspecified = true );

Опция AssumeDefaultVersionWhenUnspecified позволяет клиентам поддерживать запросы с неявной версией API.Эта опция отключена по умолчанию , что означает, что все клиенты должны отправлять запросы с явной версией API.Службы будут отвечать на запросы клиентов, которые не указывают версию API с кодом состояния HTTP 400 (Bad Request) или кодом состояния HTTP 404 (Not Found), в зависимости от того, существует ли запрошенный маршрут.

Также вы можете использовать DefaultApiVersionопция, которая определяет, какой ApiVersion по умолчанию будет для сервиса без явной информации о версии API. Настроенное значение по умолчанию: 1,0 .

services.AddApiVersioning(
    o => o.DefaultApiVersion =
        new ApiVersion( new DateTime( 2016, 7, 1 ) );

Для получения дополнительной информации см. Эту статью .

...