Могу ли я импортировать необходимые параметры QueryString как параметры QueryString, а не параметры шаблона в APIM?

Мы генерируем определение OpenApi с помощью Swagger / Swashbuckle. Затем это определение импортируется в Azure API Management.

У нас есть некоторые параметры строки запроса для запросов на получение, которые мы пометили как обязательные. Наша проверка гарантирует, что параметры строки запроса присутствуют и действительны, в противном случае мы возвращаем 400 Bad Request с подробной информацией о том, какие параметры являются недопустимыми / отсутствующими. Соответствующая часть определения OpenAPI приведена ниже. Два параметра строки запроса (помечены как обязательные) и один параметр пути (помечены как обязательные).

Извлечение определения OpenAPI

Моя проблема в том, как определение OpenApi преобразуется в операции APIM.

Обязательные параметры строки запроса добавляются как параметры шаблона, и они добавляются к URL-адресу операции. Это означает, что если они не предоставлены, APIM не может сопоставить запрос с операцией, и мы возвращаем 404 вызывающей стороне, а не полезные 400, которые вернет бэкэнд.

Определение шаблона операции APIM

Я не могу легко добавить пустые значения в строку запроса. Я не могу сделать это во входящей политике операции, так как она не соответствует операции. Выполнение этого в глобальной политике входящего трафика означало бы, что мне пришлось бы самому идентифицировать операцию (это лишь одна из многих). Точно так же, хотя я могу вернуть 400 неверных запросов в политике onerror, я не могу легко сказать вызывающему, что было не так с запросом.

Я думаю, это встроено в процесс импорта. Когда я изменил параметры шаблона на параметры запроса на портале и экспортировал, определение OpenApi было практически идентичным. Когда я повторно импортировал экспортированный шаблон, произошло то же самое. Я также попытался пройти через Wadl, который выглядел более многообещающим, но я не смог повторно импортировать этот шаблон.

Есть ли способ переместить параметры строки запроса шаблона в параметры строки запроса? Есть другие варианты?


person Michael Smith    schedule 12.02.2021    source источник
comment
Я тоже это понимаю   -  person Brian Vu    schedule 23.03.2021


Ответы (1)